Go language part 2
■ このスレッドは過去ログ倉庫に格納されています
>>509
それは分かるんだけどフルスタックなFWでモノシリックなサービス作るのにjavaより劣る点があるのかな?開発者数以外で。
今は過渡期でマイクロサービスやってるような敏感企業が先行してgo導入してる(gin流行る)→数年後、技術者が増えてjavaのポジションにgoが座る(フルスタックFWも流行る)。
なんて事を妄想してるんだけど、実際にgo使ってる人からするとこの妄想は無理がある? Googleが小中規模だと思うならどうぞ。
GoはGoogleの要望から生まれたも同じだから。 >>510
可能性としては大いにあるけど、確実なことは誰も分からんよ
少なくとも今よりは採用例が増えるし、中にはモノリシックなでかいシステムを組むところももちろん出てくるのは間違い無いと思う モノシリック → 物知り
モノリシック → モノリス >>512
そーか。とりあえずginで遊んでみるわ
>>513
ありがと goルーチンやチャンネルがそこまでスケールするものかね。
10000くらいがいいとこじゃないの? vscodeのgoプラグインで、ファイル保存時にフォーマッタかけるのを止める設定ってどこだ?
importだけ書いたところで思わず保存してしまって消えちゃうことが多くてもう嫌だ。 >>516
"[go]": {
"editor.formatOnSave": false
} >>515
どんなシステム化によるけどサーバー1台で同時10000さばけたらなかなか優秀じゃね 他の言語に当たり前のようにある機能がGoにはないよな // ̄~`i?ゝ ? ? ?`l?|
?/?/ ?,______ ,_____ ________ ?|?| ____ TM
| | ? ?___ // ̄ヽヽ // ̄ヽヽ (( ̄))? ?|?| // ̄_>>
\ヽ、 ?|l |?| ? ?|?| |?| ? ?|?| ``(?(. .|?| |?|?~~
? ?`、二===-' ?`?==='?' `?==='?' ?// ̄ヽヽ |__ゝ?ヽ二=''
? ?ヽヽ___// 日本
_____ _____ ?______? _______
| ?ウェブ? | | イメージ | | グループ | | ディレクトリ |
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
?._________________
|GoLang導入事例 │・検索オプション
└────────────────┘・表示設定
? |?Google検索 | I'm?Feeling?Lucky | ・言語ツール
? ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
○ウェブ全体から検索?◎日本語のページを検索
広告掲載について?-?人材募集?-?Googleについて?-?Google?in?English
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ? ̄ ̄ ̄ ̄  ̄ ̄ ̄ ̄ ̄ ̄ ̄  ̄ ̄ ̄ ̄ ̄ ̄ ̄
c2003?Google?-?0,000,000,000ウェブページから検索
↓
検索結果なし >>520
そりゃそういうコンセプトで作られたものだし )ソ)
ッλ ノ(.,ノ)
(゙- ..::.::. . (
(ソ. .彡⌒ミ. )ソ)
).::'; (´・ω・`) ス (
ソ .::;';'(つ ⊂)::;';'`〜、.
( :;';' |__∧_| ::;';' ヽ)
`'~`'''`'`'`~'~~`~~'`'`''''"`'`'`''`''''"`'``'~`''`'~`'''`'`'`~
さ あ 禿 げ 上 が っ て ま い り ま し た gin(gorm)とbeego(beego/orm)を味見(CRUD API+ちょっとした検索)してみた。
beegoの方が「どういうAPIが定義されているか」が分りやすくていいような気がした。
他は違いが分からなかった。
なのでbeego使っていこうと思うんだけど、そのうち困ることって出て来るのかな?
パフォーマンスとかtransactionとか思いもよらない何かとか。。 goってenumないの不便じゃない?慣れたらそうでもないんかな グーグルの天才たちがenumは要らないと判断したんだから要らないってことだよ
何も迷うことはない まさかと思いますが iota も知らずに言っているわけないですよね。
Java の enum class がないのは不便じゃないかというなら分かるけど、
enum がないのは不便と言われても const + iota + type でいいじゃんと思った。 例外は不便じゃないが、ジェネリクスは確かに欲しいっちゃ欲しいけど、無くてもなんとかしてた、かなぁ。
Go 2のジェネリクスは早く来て欲しい。 例外はデメリットも結構あるから、Goはこれでいいと思う。
どうしても例外使いたけりゃ他の言語を選べばいいだけだし >>530
そう。javaのやつ。
あれからいじくり回した結果、自分でメソッド生やせば似たような事はできた。
そしてjavaのenumに求めていたような事はgoでは違う方法で実現すべきという気がしてきた。。 レガシージャバで嫌な思いしてきたからgo最高ですよ そりゃ違う言語なら違うやり方を選ぶべきだよ。
と、かつてCOBOLの流儀で書かれたJavaに殺されかけたおじさんはそう思うよ。 リモートプロセスとchannel通信したいと思ったんだけど、netchanってもう非推奨なんだよね。
代わりになるものって無いのかな。 標準パッケージだとrpcしかないか。
channelから取得したデータをrpcで投げるブリッジを自分で用意すればなんとかなるかな。
それにしてもなんでnetchanやめたんだろうね。 log.Fatal()を呼び出したときdeferが実行されない罠なんなんですか panic()使ってmain()のdefer内のrecover()で拾ってlog.Fatal()使えってこと? >>543
log.Panic()使えばいいんじゃね?
それとも、同じ関数内のdeferは呼びたいけど上位のdeferは処理したくないってこと? Fatalは致命的なのでリソース解放とか気にしている場合じゃないのです 致命的な状況でFatalの代わりにPanicを呼ぶのは妥当ではありません
プログラムの実行の継続をしてはいけない状況でPanicはプログラムを終了できる保証はありません 目的で使い分けりゃいいだけの話。defer呼びたいっていうことならPanicでいいだろ。 放置してたチュートリアルを、最近また始めた。
前はエラーのinterfaceが理解しきれず詰まったんだけど、
今回やり直してやっと原因がわかった。
fmt.Errorfで返せばええやん
interfaceの説明のためにエラーを返すためだけのタイプ作ってるってことが今はわかったけど、
前はその意図が全く理解できず放置になってしまった
そういうとこあかんよねgo言語(´・ω・`) または前の関数使い回さず、
interfaceに変えた上で実装なら筋が通ってる
あんな使い方するシチュ無いよね? あーごめんこれ
https://go-tour-jp.appspot.com/methods/20
■正答とされているもの
func (e ErrNegativeSqrt) Error() string {
return "cannot Sqrt negative number: " + fmt.Sprint(float64(e))
}
func Sqrt(x float64) (float64, error) {
if x < 0 { return x, ErrNegativeSqrt(x) }
}
実際やるなら普通こうだろ!と思った答え
■その1 fmt.Errorfつかう
func Sqrt(x float64) (float64, error) {
if x < 0 { return x, fmt.Errorf("cannot Sqrt negative number: %f", x) }
}
■その2 interfaceで揃える
type FloatValue float64
func (x FloatValue) Error() string {
return "cannot Sqrt negative number: " + fmt.Sprint(float64(x))
}
func (x FloatValue) Sqrt() (float64, error) {
if x < 0 { float64(x), x }
}
func main() {
o := FloatValue(2)
fmt.Println(o.Sqrt())
}
typeにErrorを実装することでinterfaceの条件を満たせるんですよってのが演習の目的なんだと思うけど、実際こんな実装するの?って疑問に思った。行数限界 >>553
リンク先ちゃんと読んでなかった
いろんな回答例出てるのね
ただ出題の前提条件はやっぱおかしいというか、無理がある気はする
新しい型:
type ErrNegativeSqrt float64
を作成してください。
こんな事普通しないよね?
という話でした
明日にでも読んでみますわブログ >>555
普通するかどうかは問題じゃない
言語の機能を一通り学ぶことがチュートリアルの目的なのだからね >>556
ユースケースって大事だと思うけどなぁ
最初何やってるか、何やろうとしてるか理解できなかったし あとここに書いたのは、
正答の例って使うシーン無いよね?ってのが本当にわからなかったからでもあります(´・ω・`) > こんな事普通しないよね?
golangではする >>555
エラーの型を作るのは深いところからerrorが戻ってきたときに何のエラーか特定できるようにしてエラー次第で処理を分岐するためなのではないの? >>560
戻ってきたときにはエラー型になってるから型判定は無理で、
メッセージで判定するならその階層のために型を作る必要が無いのではなかろうか
まだ上のリンク読んでないから、違ってたらすまん エラーってインターフェースだから、タイプアサーションで型判別は出来るんでないかい? >>562
ありがとうございますorz
なるほどswitch型アサーションしてエラー処理出来るのね。。 goに関係なくインターフェースって言葉自体を理解してなさそう すまんがA Tour of Goの次はどこ行けばいいの?
さしあたっての到達地点はgRPCでWebAPIを書くことなんだけど、おすすめがあったら教えて これってなんで通らないんですか?
https://go-tour-jp.appspot.com/moretypes/18
package main
import "golang.org/x/tour/pic"
func Pic(dx, dy int) [][]uint8 {
image := make([][]uint8, dy)
for y := 0; y < dy; y++ {
image[y] = make([]uint8, dx)
}
for y := 0; y < dy; y++ {
for x := 0; x < dx; x++ {
image[y][x] = uint8((x + y) / 2) //14行目
}
}
return image
}
func main() {
pic.Show(Pic(10, 10)) //21行目 pic.Show(Pic())なら通る
}
エラー内容
prog.go:21:14: cannot use Pic(10, 10) (type [][]uint8) as type func(int, int) [][]uint8 in argument to pic.Show 引数が間違ってるからでしょ、pic.Showは、f func(int, int) [][]uint8、これを受け取るのだから
その書き方だと、[][]uint8しか受け取ってない、因みにpic.Show(Pic())も通らないはず
pic.Show(Pic)なら通る そうだったのか、そもそもを全く勘違いしてたよ
Pic()の戻り値である[][]uint8を渡してるんじゃなくて、Pic関数を渡してるのか
ありがとう Goのシンプルさを再認識した
これ(・∀・)イイネ!! Mapがない言語から来たんで、どう役に立つのかよう分からん
よくある辞書型とはちがうんか? namespace周りはもう少しなんとかなりそう。
検索するのが意外と不便。 >>571
https://github.com/gorilla/websocket/blob/master/examples/chat/hub.go
> type Hub struct {
> // Registered clients.
> clients map[*Client]bool
最近見てへーと思ったwebsocketのサンプルチャット
typeのポインタをmapのkeyにしてる 1.12リリースあげ
TLS1.3自前実装とは恐れ入る。 TLS1.3ってHTTP/3.0とセットじゃなかったっけ? 全く知らないんだけどちょっとググったんだけど
HTTPS的なものなの? http/3とセットなのはquic
quicはtls 1.3を参考にしてるけど別物
httpsのs (secure) 部分の最新仕様がtls 1.3 go案件は増えてきてるのにここの書き込みが少ないのは5chの人気が衰退してるってことなん? うん
新しいものに敏感な今の若い子は5chを見ない 2chの代わりってどこなんだろう
Teraなんとかとqiitaなのかな genericsが正式リリースされたら使ってやろうと様子見。 ジェネリクスが入ったら、インターフェイスで書くのはレガシーになるんだろうか Goは難しすぎる
Cに挫折して流れてきたけどCの方がまだわかりやすいと思える 良かった、やっぱり人居たじゃん。
という釣りだと思うけど 難しくはないけど直感的じゃないしコードの見た目が汚いとは思う そういや、チュートリアルのクイズはなにを求めてるのかよく分からんかったな >>590
ああそれだ
俺みたいにコードを論理ではなく見た目で直感的に解釈するタイプの人間には果てしなく合わない
やっぱこれを作ったグーグルの秀才たちの感性は俺とは違うんだなと思った 見知っている言語と似ているようで微妙に違う、不気味の谷を感じることはある。
丸括弧の使い方とかinterface{}とか。contractはさらにキモいな。 C作った人がCじゃないものを作ったわけで
他の言語はCの影響どっかしら受けてるだろうから
別物になるのは当然っちゃ当然なような QiitaじゃGoとかScalaがもてはやされてるけど実務でガッツリ使ってる企業って1%もないよね? Goはそこそこ使われてんじゃん
ただGoでの求人はないだろうな Scalaがもてはやされてたのは2017年頃までやろ
昨年は既に空気やで… よくサーバサイドのエンジニアがJavaScriptの流行り廃り怖すぎwって言ってるけど最近はサーバ側の方が激しくない? scala嫌いではないけど万人に好かれるような言語じゃないよな、理想に走りすぎてて使いにくいというか
いまscalaかKotlinか選べるなら100人中98人はKotlinを選ぶだろう 誰でも頭が良くなる、プログラムが書けるようになる方法が発見される 83890
https://you-can-program.hatenablog.jp 情報工学を学んでいない者にも使える言語がこの先生きのこる
GoやJavaScriptみたいな大雑把な言語設計でも直感的に書けるのは大事 ■ このスレッドは過去ログ倉庫に格納されています