å²ç¢ã®åºæ¬
Goããã°ã©ãã³ã°èšèªã®åºæ¬ãå æ¬çã«çè§£ããããšãã§ããŸããåå¿è ãéçºè ã®ããã®ãã³ãããã¹ããã©ã¯ãã£ã¹ãåŠã³ãGoãšã®æ ãã¹ã¿ãŒããããŸãããã

Goèšèªå ¥é
GolangG oã¯ãGoogleã®ãšã³ãžãã¢ïŒRobert Griesemer ãRob Pike ãKen Thompson ïŒã«ãã£ãŠéçºããããªãŒãã³ãœãŒã¹ã®ããã°ã©ãã³ã°èšèªã§ããã·ã³ãã«ã§å¹ççããã€ä¿¡é Œæ§ã®é«ãèšèªãšããŠèšèšãããŠããŸããGoã¯ãç¹ã«ãµãŒããŒãµã€ããããã¯ãšã³ãã®ã€ã³ãã©ã·ã¹ãã ã®é åã§ãææ°ã®ã¢ããªã±ãŒã·ã§ã³éçºã«çæ³çã«é©ããŠããŸããGoã¯ãããããããæ§æã䞊è¡åŠçã®çµã¿èŸŒã¿ãµããŒããåªããããã©ãŒãã³ã¹ã«ããããŠã§ãã¢ããªã±ãŒã·ã§ã³ããã€ã¯ããµãŒãã¹ã忣ã·ã¹ãã ã®æ§ç¯ã«ãããŠãéçºè ã®éã§äººæ°ã®ããéžæè¢ãšãªã£ãŠããŸãã
Goã®ãšã³ã·ã¹ãã ã¯2009幎ã®ãªãªãŒã¹ä»¥æ¥æ¥éã«çºå±ããéçºè ãæŽ»çšã§ããããŸããŸãªã©ã€ãã©ãªãããŒã«ãæäŸãããŠããŸããDropboxãUberã Dockerãªã©ã® äŒæ¥ãããã¯ãšã³ãã·ã¹ãã ã®åºç€ã«Goãæ¡çšãã仿¥ã®æè¡ç°å¢ã«ãããGoã®éèŠæ§ãšé¢é£æ§ãããã«éç«ãããŠããŸãã
ãã®èšäºã§ã¯ãGoãšãã®æ§æã®åºç€ããã£ãã身ã«ã€ããGoããã°ã©ãã³ã°ã®æ ãå§ããããã®äž»èŠãªèšèªæ©èœã«çŠç¹ãåœãŠãããšãç®çãšããŠããŸãã
Goã®ã€ã³ã¹ããŒã«ãšã»ããã¢ãã
Goã䜿ãå§ããåã«ãã䜿ãã®ã³ã³ãã¥ãŒã¿ã«èšèªãã€ã³ã¹ããŒã«ããå¿ èŠããããŸãã以äžã®æé ã§å§ããŠãã ããïŒ
-
Goã®å ¬åŒãŠã§ããµã€ãã«ã¢ã¯ã»ã¹ããã䜿ãã®ãªãã¬ãŒãã£ã³ã°ã·ã¹ãã ã«é©ããã€ã³ã¹ããŒã«ãã¡ã€ã«ãããŠã³ããŒãããŸãã
-
ããŠã³ããŒããããã¡ã€ã«ãéããã€ã³ã¹ããŒã©ãæäŸããã€ã³ã¹ããŒã«æé ã«åŸããŸãã
-
ç°å¢å€æ°
PATHã«Goã®ã€ã³ã¹ããŒã«ãã£ã¬ã¯ããªãèšå®ããŸããããã«ãããGoã³ãã³ããã³ãã³ãã©ã€ã³ããå©çšã§ããããã«ãªããŸããUnix ã·ã¹ãã ã§ã¯ãéåžžãæ¬¡ã®è¡ã.bashrcãŸãã¯.profileãã¡ã€ã«ã«è¿œå ããããšãã§ããŸãïŒexport PATH=$PATH:/usr/local/go/bin -
ã¿ãŒããã«ãŸãã¯ã³ãã³ãããã³ãããåèµ·åãã倿Žãé©çšããŸãã
-
ã¿ãŒããã«ã§æ¬¡ã®ã³ãã³ããå®è¡ããŠãGoãæ£ããã€ã³ã¹ããŒã«ãããŠããããšã確èªããŸãïŒ
Go ããŒãžã§ã³ã€ã³ã¹ããŒã«ãæåããå Žåãã³ã³ãã¥ãŒã¿ã«ã€ã³ã¹ããŒã«ãããŠããGoã®ããŒãžã§ã³ãåºåã«è¡šç€ºãããŸãã
Goãã³ã³ãã¥ãŒã¿ã«ã€ã³ã¹ããŒã«ãããã®ã§ã次ã¯èšèªã®åºæ¬ãåŠã³ãŸãããã
Goã®æ§æãšããŒã¿åã«ã€ããŠçè§£ãã
Goã®ææ³ã¯ã·ã³ãã«ã§èªã¿ãããããã«èšèšãããŠããŸããããã§ã¯ãããã±ãŒãžãã€ã³ããŒãã倿°ãåºæ¬çãªããŒã¿åãªã©ãèšèªã®éèŠãªèŠçŽ ã«ã€ããŠèª¬æããŸãã
ããã±ãŒãžãšã€ã³ããŒã
Goã®ããã°ã©ã ã¯ãã³ãŒããã¢ãžã¥ãŒã«åããŠç®¡çããã®ã«åœ¹ç«ã€ ããã±ãŒãžã« ç·šæãããŠããŸããããã±ãŒãžã¯ãåºæ¬çã«1ã€ãŸãã¯è€æ°ã®GoãœãŒã¹ãã¡ã€ã«ãå«ããã£ã¬ã¯ããªã§ãããã¹ãŠã®Goãã¡ã€ã«ã®æåã®è¡ã¯ããã®ãã¡ã€ã«ãå±ããããã±ãŒãžã宣èšããå¿
èŠããããŸãïŒ
ããã±ãŒãžmain
äžèšã®äŸã§ã¯ããœãŒã¹ãã¡ã€ã«ã¯ãmainãããã±ãŒãžã«å±ããŠããŸããããã±ãŒãžå®£èšã«ç¶ãã³ãŒããããã¯ã¯ãéåžžãããã°ã©ã ã«å¿
èŠãªä»ã®ããã±ãŒãžãå«ã import æããæ§æãããŠããŸãïŒ
ã€ã³ããŒã ( "fmt" "math" )
import æã¯ãçŸåšã®ãã¡ã€ã«ã«ã€ã³ããŒãããããã±ãŒãžãæå®ãã颿°ã倿°ãªã©ããã®ããã±ãŒãžããšã¯ã¹ããŒãããæ©èœã«ã¢ã¯ã»ã¹ã§ããããã«ããŸãã

倿°ãšå®æ°
Goã®å€æ°ã¯ var ããŒã¯ãŒãã§å®£èšãããã®åŸã«å€æ°åãåãåæå€ïŒãªãã·ã§ã³ïŒãæå®ããŸãïŒ
var x int = 10
åæå€ãæå®ãããŠããå ŽåãGoã¯åãæšæž¬ããããšãã§ããã®ã§ãå宣èšãçç¥ããããšãã§ããŸãïŒ
var x = 10 // xã¯intã§ã
ãŸããGoã®çã倿°å®£èšæ§æã䜿çšãããšãèªåçã«åãæšæž¬ãããåæå€ãå²ãåœãŠãããŸãïŒ
x := 10 // xã¯intã§ãã
宿°ã¯ã const ããŒã¯ãŒãã§å®£èšã§ããŸãã宿°ã¯constããŒã¯ãŒãã§å®£èšããããšãã§ããŸãïŒ
const PI = 3.14159
åºæ¬çãªããŒã¿å
Goã«ã¯ã以äžã®ãããªããã€ãã®åºæ¬çãªããŒã¿åããããŸãïŒ
- æŽæ°ïŒ 笊å·ä»ãæŽæ°ã¯ã
intãint8ãint16ãint32ãint64ã§å®£èšããããšãã§ããŸãã笊å·ãªãæŽæ°ã¯ãuintãuint8ãuint16ãuint32ãuint64ã§å®çŸ©ã§ããŸãã - æµ®åå°æ°ç¹æ°ïŒFloating-Point NumbersïŒïŒ
float32ãfloat64ã®ããããã䜿çšããŠå®çŸ©ããããšãã§ããŸãã - è€çŽ æ°ïŒ è€çŽ æ°ã¯
complex64ãŸãã¯complex128ã䜿çšããŠå®£èšããŸãã - ããŒãªã¢ã³ ããŒãªã¢ã³ïŒ
boolããŒã¿åã§è¡šãããtrueãŸãã¯falseã®å€ãæã€ããšãã§ããŸãã - æååïŒ æååïŒå²ç¢ã®æååã¯ãUTF-8ã§ãšã³ã³ãŒããããæåã®äžŠã³ã§ããæååã¯äžå€ã§ããããã®é·ãã¯å®è¡æã«æ±ºå®ãããŸãã
ããã«ãGoã¯ä»¥äžã®ãããªè€åããŒã¿åããµããŒãããŠããŸãïŒ
- é åïŒ é åïŒåãåã®èŠçŽ ãããªãåºå®é·ã®ã·ãŒã±ã³ã¹ã
- ã¹ã©ã€ã¹ïŒ åãåã®èŠçŽ ãããªãåçãªé·ãã®ã·ãŒã±ã³ã¹ã
- ãããïŒ ããŒãšå€ã®ãã¢ã§æ§æãããé åºã®ãªãã³ã¬ã¯ã·ã§ã³ã§ãããŒãšå€ã¯æå®ãããä»»æã®åãæã€ããšãã§ããŸãã
Goã®åŠç¿ãç¶ãããã¡ã«ããããã®åºæ¬çãªããŒã¿åãšæ§é ãçµã¿åãããŠãããè€éã§å€çšéãªã¢ããªã±ãŒã·ã§ã³ãæ§ç¯ã§ããããã«ãªããŸãã
Goã®é¢æ°ãšã¡ãœãã
颿°ã¯ãã©ã®ãããªããã°ã©ãã³ã°èšèªã§ãäžå¯æ¬ ãªæ§æèŠçŽ ã®1ã€ã§ãããGoãäŸå€ã§ã¯ãããŸãããGoã®é¢æ°ã¯ func ããŒã¯ãŒãã§å®çŸ©ããããã®åŸã«é¢æ°åãå
¥åãã©ã¡ãŒã¿ãæ»ãå€ã®åã颿°æ¬äœãç¶ããŸããGoã®é¢æ°ã¯è€æ°ã®å€ãè¿ãããšãã§ããã®ã§ãè€éãªæäœããšã©ãŒãã§ãã¯ãç°¡åã«è¡ãããšãã§ããŸãã
以äžã¯ãç°¡åãªGo颿°ã®äŸã§ãïŒ
package main import ( "fmt" ) func add(a int, b int) int { return a + b } func main() { result1 := add(5, 7) fmt.Println("The sum is:", result1) } }.
ãã®äŸã§ã¯ã2ã€ã®æŽæ°ãã©ã¡ãŒã¿ãåãåãããã®åãè¿ãåçŽãª add 颿°ãå®çŸ©ããŠããŸãããã®é¢æ°ã¯ã main 颿°ããåŒã³åºãããçµæã衚瀺ãããŸãã
Goã®ã¡ãœãã
Goã®ã¡ãœããã¯é¢æ°ãšäŒŒãŠããŸãããç¹å®ã®åä¿¡æ©åã«é¢é£ä»ããããåä¿¡æ©åã®ã€ã³ã¹ã¿ã³ã¹ã«å¯ŸããŠåŒã³åºãããŸãããã®ããããªããžã§ã¯ãæåããã°ã©ãã³ã°èšèªãã¯ã©ã¹ã«å¯ŸããŠã¡ãœãããå®çŸ©ããã®ãšåãããã«ãæ¢åã®åã«åäœã远å ããããšãå¯èœã§ãã以äžã¯ãã®äŸã§ããïŒ
package main import ( "fmt" ) type Circle struct { radius float64 } func (c Circle) area() float64 { return 3.14159 * c.radius * c.radius } func main() { myCircle := Circle{radius: 5} circleArea := myCircle.area() fmt.Printf("The area of the circle is: %.2fn", circleArea) }
ãã®äŸã§ã¯ã Circle æ§é äœã« radius ãã£ãŒã«ããå®çŸ©ããŠããŸãããããŠã Circle åã« areaãšãã ã¡ãœãããå®çŸ©ããŠããŸãããã®ã¡ãœããã¯ãååŸããåã®é¢ç©ãèšç®ãããã®çµæãfloat64å€ã§è¿ãã
Goã®å¶åŸ¡æ§é
å¶åŸ¡æ§é ã¯ãããã°ã©ã ã®æµããæ±ºå®ãããããã©ã®ãããªããã°ã©ãã³ã°èšèªã§ãåºç€ãšãªããã®ã§ããGoã§ã¯ãæ¡ä»¶åå²ãã«ãŒããè€æ°ã®æ¡ä»¶ãã§ãã¯ãéä¿¡æäœã®ããã®å¶åŸ¡æ§é ãããã€ãçšæããŠããŸãã
Ifã¹ããŒãã¡ã³ã
Goã§ã¯ãæ¡ä»¶åå²ã¯éåžž if æã䜿ã£ãŠè¡ãããŸããifæã¯ããŒãªã¢ã³åŒãè©äŸ¡ããçã§ããã°åŒã«ç¶ãã³ãŒããããã¯ãå®è¡ããŸãã以äžã¯ãã®äŸã§ãïŒ
package main import ( "fmt" ) func main() { number := 42 if number%2 == 0 { fmt.Println("The number is even.") } else { fmt.Println("The number is odd.") } } ãã®äŸã§ã¯ãå¶æ°ãåŠãããã§ãã¯ããŠããŸãã
ãã®äŸã§ã¯ãã¢ãžã¥ãæŒç®åãš if æã䜿ã£ãŠãæ°å€ãå¶æ°ã奿°ãã調ã¹ãŠããŸãã
ã«ãŒãã®å Žå
Goã«ã¯ã for ã«ãŒããšãã1çš®é¡ã®ã«ãŒããããããŸãããforã«ãŒãã¯ãåºå®å埩ãç¡éã«ãŒããwhileã«ãŒããªã©ãããããã«ãŒãã®ã·ããªãªã«äœ¿çšã§ããŸãã以äžã¯ãã®äŸã§ãïŒ
package main import ( "fmt" ) func main() { for i := 1; i <= 5; i++ { fmt.Println("Iteration:", i) } }.
ãã®äŸã§ã¯ãã«ãŠã³ã¿ä»ãã® for ã«ãŒãã䜿ã£ãŠ5åå埩ããçŸåšã®ååŸ©åæ°ã衚瀺ããŠããŸãã
switchæãšSelectæ
Goã«ã¯ãè€æ°ã®æ¡ä»¶ãã§ãã¯ãè¡ã switch æãšãéä¿¡åŠçãè¡ã select æããããŸãã以äžã¯ switch æã®äŸã§ãïŒ
package main import ( "fmt" ) func main() { grade := "B" switch grade { case "A": fmt.Println("Excellent!") case "B": fmt.Println("Good") case "C": fmt.Println("Fair") case "D": fmt.Println("Poor") default: fmt.Println("Invalid grade") } } }
ãã®äŸã§ã¯ã switch æã䜿ã£ãŠãå
¥åãããæçžŸããã§ãã¯ããããã«å¯Ÿå¿ããæçžŸè¡šç€ºã衚瀺ããŠããŸããä»ã®èšèªãšç°ãªããGoã¯åã±ãŒã¹ãããã¯ã®æåŸã« break æãå¿
èŠãšããŸãããããã¯ãäžèŽããã±ãŒã¹ãå®è¡ããåŸã« switch æãçµäºããããã§ãã
Goã®äžŠè¡åŠç
Goã®æã匷åãªæ©èœã®1ã€ã¯ã Goroutinesãš Channelã䜿çšãã䞊è¡åŠçã®çµã¿èŸŒã¿ãµããŒãã§ããåæå®è¡ã«ãããè€æ°ã®ã¹ã¬ãããåæã«å®è¡ããããšãã§ããã¢ããªã±ãŒã·ã§ã³ã®ããã©ãŒãã³ã¹ãšå¿çæ§ãåäžãããããšãã§ããŸãã
ãŽã«ãŒãã³
ãŽã«ãŒãã³ã¯ãGoã®è»œéãªåæå®è¡é¢æ°ã§ãããŽã«ãŒãã³ãäœæããã«ã¯ã颿°åŒã³åºãã®åã« go ããŒã¯ãŒãã远å ããã ãã§ãããã®é¢æ°ã¯ãããã°ã©ã ã®æ®ãã®éšåãšåãã¢ãã¬ã¹ç©ºéãå
±æããªãããåæã«å®è¡ãéå§ããŸãã以äžã¯ãã®äŸã§ãïŒ
package main import ( "fmt" "time" ) func display(message string) { for i := 0; i < 5; i++ { fmt.Println(message) time.Sleep(1 * time.Second) } } func main() { go display("Hello") go display("World") // çµäºåã«Goroutineãçµäºããã time.Sleep(5 * time.Second) }
ãã®äŸã§ã¯ãã¡ãã»ãŒãžã衚瀺ãã1ç§éã®åæ¢ãç¹°ãè¿ã2ã€ã®GoroutineãäœæããŠããŸããmain颿°ã¯5ç§éåŸ æ©ããGoroutinesãçµäºããã®ã確èªããŠããããã°ã©ã ãçµäºããŠããŸãã
ãã£ãã«
ãã£ãã«ã¯ããŽã«ãŒãã³éã®éä¿¡ææ®µã§ããGoroutineã¯ã¹ã¬ããã»ãŒããªæ¹æ³ã§å€ãéåä¿¡ããããšãã§ããŸãã以äžã¯ãã®äŸã§ãïŒ
package main import ( "fmt" ) func producer(numbers chan<- int) { for i := 1; i <= 5; i++ { fmt.Println("Produced:", i) numbers <- i } close(numbers) // çµäºããããã£ãã«ãéãã } func consumer(numbers <-chan int) { for number := range numbers { fmt.Println("Consumed:", number) } } func main() { numbers := make(chan int) go producer(numbers) go consumer(numbers) // Goroutinesãçµäºããã time.Sleep(1 * time.Second) } }.
ãã®äŸã§ã¯ãæ°å€ãçæããŠãã£ãã«ã«éä¿¡ãã ãããã¥ãŒãµãŒãŽã«ãŒãã³ãšããã£ãã«ããåãåã£ãæ°å€ãåŠçãã ã³ã³ã·ã¥ãŒããŒãŽã«ãŒãã³ã äœæããŠããŸãããã£ãã«ã䜿ãããšã§ãGoroutineéã®å®å
šãªéä¿¡ãä¿èšŒããŠããŸãã
ãŽã«ãŒãã³ãšãã£ãã«ã䜿çšããGoã®äžŠè¡åŠçã¯ã䞊è¡ã¢ããªã±ãŒã·ã§ã³ã®éçºãç°¡çŽ åããããå¹ççã§ä¿¡é Œæ§ãé«ããçè§£ãããããã®ã«ããŸãã
Goã³ãŒããæžãããã®ãã¹ããã©ã¯ãã£ã¹
匷åãªã¢ããªã±ãŒã·ã§ã³ãéçºããé·æçã«æåãããããã«ã¯ãã¯ãªãŒã³ã§ä¿å®æ§ã®é«ããå¹ççãªGoã³ãŒããæžãããšãéèŠã§ããããã§ã¯ãGoã䜿çšããéã«åŸãã¹ããã¹ããã©ã¯ãã£ã¹ãããã€ã玹ä»ããŸãïŒ
é©åãªåœåèŠå
åœåèŠåã¯ãGo ã³ãŒããçè§£ããããä¿å®ãããããã®ã«ããããã«éèŠãªåœ¹å²ãæãããŸããGoã®åœåã«é¢ãã以äžã®ã¬ã€ãã©ã€ã³ã«åŸã£ãŠãã ããïŒ
- ããã±ãŒãž åã¯å°æåã§ãçããç°¡æœã§ãªããã°ãªããŸãããããã±ãŒãžåã¯å°æåã§ãçããç°¡æœã«ãã¢ã³ããŒã¹ã³ã¢ã倧æåãšå°æåãæ··åšããååã¯äœ¿ããªãã§ãã ããã
- 倿°åã颿°åãã¡ãœããå㯠ãã£ã¡ã«ã±ãŒã¹ã§ãååèªã®æåã®æåã倧æåã«ããŸãïŒæåã®åèªãé€ãïŒã
- ä»ã®ããã±ãŒãžããã¢ã¯ã»ã¹ã§ãã颿°ãã¡ãœããã倿°ãªã©ã® ãšã¯ã¹ããŒãããã èå¥åã¯ã倧æåã§å§ãŸãå¿ èŠããããŸãã
- éãšã¯ã¹ããŒãèå¥åïŒå®çŸ©ãããããã±ãŒãžå ã«éå®ãããïŒã¯ãå°æåã§å§ããå¿ èŠããããŸãã
é©åãªæžåŒèšå®
Goã®ã³ãŒãã§äžè²«ããæžåŒãå®ãããšã§ãèªã¿ããããçè§£ãããããªããŸããGoã³ãã¥ããã£ã¯gofmtãšããããŒã«ãéçºããæšå¥šãããã¬ã€ãã©ã€ã³ã«åŸã£ãŠã³ãŒããèªåçã«ãã©ãŒãããããããã«ããŸããããã®ããŒã«ã䜿ã£ãŠãããªãã®ã³ãŒããäžè²«ããã¹ã¿ã€ã«ã«ãªãããã«ããŸãããã
çããŠéäžã§ãã颿°ãæžã
颿°ãã¡ãœããã¯çãã1ã€ã®ç®çã«éäžããããã«ããŸããããããã«ãããèªã¿ããããšä¿å®æ§ãåäžãããã¹ããç°¡åã«ãªããŸãã1ã€ã®é¢æ°ã«ããŸããŸãªè²¬ä»»ãæãããã®ã§ã¯ãªããããå°ãããããå ·äœçãªé¢æ°ã«åå²ããŠèšè¿°ããŸãããã®ã¢ãããŒãã¯ãã¢ããªã±ãŒã·ã§ã³ã®ããŸããŸãªéšåã§ã³ãŒããåå©çšããã®ã«ã圹ç«ã¡ãŸãã
å³å¯ãªãšã©ãŒåŠç
ãšã©ãŒåŠçã¯ãGoããã°ã©ãã³ã°ã®äžæ žããªãèŠçŽ ã§ããGoã§ã¯ãäŸå€ã«é Œãããæç€ºçã«ãšã©ãŒãåŠçããããšãæšå¥šããŠããŸãã颿°ããšã©ãŒãè¿ããããåžžã«ãã§ãã¯ããŠé©åã«åŠçããŸãããšã©ãŒçºçæã«ããã°ã©ã ãæ£ããåäœããããã«ãæ
£çšç㪠if err != nil ãã¿ãŒã³ã䜿çšããŠãã ããããŸãããšã©ãŒã¡ãã»ãŒãžã«æèãæãããããšã§ãä»ã®éçºè
ãããç°¡åã«åé¡ãç¹å®ã»èšºæã§ããããã«ããŸãã
å æ¬çãªåäœãã¹ããæžã
ãŠããããã¹ãã®äœæã¯ãGo ã³ãŒãã®æ£ç¢ºããšä¿¡é Œæ§ã確ä¿ããããã«äžå¯æ¬ ã§ããGoã«ã¯ãtestingããã±ãŒãžã«ãããã¹ãã®ãµããŒããçµã¿èŸŒãŸããŠããŸããåã ã®é¢æ°ãã¡ãœãããããã³ããã±ãŒãžã®ãã¹ããæžããŠããã®åäœãæ€èšŒããã³ãŒãã倿Žããéã«æœåšçãªåé¡ãææããŸãããã°ãé²ããã³ãŒãã®ä¿¡é Œæ§ãé«ããããã«ãã¡ã³ããã³ã¹å¯èœã§åŸ¹åºãããã¹ããæžãããšã«æéãè²»ãããŠãã ããã
Goããã±ãŒãžãšã©ã€ãã©ãªãè³¢ã䜿ã
Goã«ã¯ãæšæºã©ã€ãã©ãªãå¹ åºãã³ãã¥ããã£ããæäŸãããŠããå€ãã®ã©ã€ãã©ãªãããã±ãŒãžãããã匷åãªãšã³ã·ã¹ãã ããããŸããã©ã€ãã©ãªã®äœ¿çšã¯æéã®ç¯çŽã«ãªããŸãããå€éšäŸåé¢ä¿ãéžæããéã«ã¯æ éã«ãªã£ãŠãã ãããåžžã«è©å€ãè¯ããååã«ææžåãããã©ã€ãã©ãªãéžã³ãè€æ°ã®éžæè¢ãè©äŸ¡ããŠããæ±ºå®ããŠãã ãããããã«ãäŸåé¢ä¿ã®ãªã¹ãã管çããããããæœåšçãªã»ãã¥ãªãã£ãããã©ãŒãã³ã¹ã®åé¡ããªãããç£èŠããããã«ããŸãããã
ã³ãŒããææžåãã
æç¢ºã§ç°¡æœãªã³ã¡ã³ããæžããGo ã®ããã¥ã¡ã³ãèŠçŽã䜿çšããŠã³ãŒããææžåããŸããé©åãªã³ã¡ã³ãã説æãäŸã§ã³ãŒããææžåããããšã¯ãé·æçãªä¿å®æ§ãšããŒã ã¯ãŒã¯ã®ããã«éåžžã«éèŠã§ãã
Goã®äººæ°ã®ãã䜿çšäŸãšã©ã€ãã©ãª
Goã¯æ±çšæ§ã®é«ãããã°ã©ãã³ã°èšèªã§ãããå€ãã®äœ¿çšäŸããããŸããGoã®æã人æ°ã®ããå¿çšåéã«ã¯ã以äžã®ãããªãã®ããããŸãïŒ
- ãµãŒããŒãµã€ãããã°ã©ãã³ã°ãšãŠã§ããµãŒãã¹
- ãããã¯ãŒãã³ã°ãšåæ£ã·ã¹ãã
- ãã€ã¯ããµãŒãã¹ã»ã¢ãŒããã¯ãã£
- DevOpsãš CLIããŒã«
ããã§ã¯ãäžè¬çãªéçºããŒãºã«å¯Ÿå¿ãããGoãšã³ã·ã¹ãã ã®äººæ°ã©ã€ãã©ãªãšãã¬ãŒã ã¯ãŒã¯ã®ãªã¹ãã玹ä»ããŸãïŒ
Web ãã¬ãŒã ã¯ãŒã¯ãšã©ã€ãã©ãª
- GinïŒé«éãã·ã³ãã«ã軜éãªWebãã¬ãŒã ã¯ãŒã¯ã§ãmartiniã®ãããªAPIãåããŠããŸãã
- EchoïŒé«æ§èœã§ãæ¡åŒµå¯èœã§ããããã«ãªGoçšWebãã¬ãŒã ã¯ãŒã¯ã§ãã
- Revelãã«ã¹ã¿ãã¯ã®Webãã¬ãŒã ã¯ãŒã¯ã§ãèšå®ãå®åçãªã³ãŒãã¯å¿ èŠãããŸããã
APIãšãããã³ã« ããŒã«
- gRPCïŒé«æ§èœã§ãªãŒãã³ãœãŒã¹ã®ãŠãããŒãµã« RPC ãã¬ãŒã ã¯ãŒã¯ã§ãã
- Gorilla MuxïŒGo Web ã¢ããªã±ãŒã·ã§ã³ãš API ãæ§ç¯ããããã®åŒ·å㪠URL ã«ãŒã¿ãŒãšãã£ã¹ãããã£ãŒ ã©ã€ãã©ãªã§ãã
ããŒã¿ããŒã¹ãã©ã€ããšãã«ããŒ
- GORM PostgreSQLã MySQLãSQLiteãªã©ãããŸããŸãªããŒã¿ããŒã¹ã·ã¹ãã ããµããŒãããGoã®ããã®çŽ æŽãããORMã©ã€ãã©ãªã§ãã
- sqlx: æšæºããŒã¿ããŒã¹/sqlããã±ãŒãžã®æ¡åŒµã§ãæšæºããã±ãŒãžãšã®äºææ§ãç¶æããªããããŒã¿ããŒã¹æäœãç°¡çŽ åã»åŒ·åããŸãã
ãããã®ã©ã€ãã©ãªä»¥å€ã«ããGoæšæºã©ã€ãã©ãªã«ã¯ããããã¯ãŒã¯ãI/OãããŒã¿æ§é ãã¢ã«ãŽãªãºã ãªã©ãããŸããŸãªæ©èœãæ±ãããã®äŸ¿å©ãªããã±ãŒãžã倿°çšæãããŠããŸãã

Goããã°ã©ãã³ã°èšèªãåŠã³ãäžè¬çãªã©ã€ãã©ãª/APIã䜿çšããããšã¯ãæåããã¢ããªã±ãŒã·ã§ã³ãæ§ç¯ããããã®äžåŽé¢ã«éããªããšããããšã¯ã泚ç®ã«å€ãããéçºããã»ã¹ãçã«å éããæè¡çè² åµããªããã«ã¯ã AppMaster ã詊ããŠã¿ãŠã¯ãããã§ããããããã® ããŒã³ãŒãã»ãã©ãããã©ãŒã ã¯ãããžã¥ã¢ã«ã»ã€ã³ã¿ãŒãã§ãŒã¹ã䜿çšããŠããã¯ãšã³ãããŠã§ããã¢ãã€ã«ã»ã¢ããªã±ãŒã·ã§ã³ãæ§ç¯ããèªåçã«ãœãŒã¹ã³ãŒããçæããŠãæè¡çè² åµããªããããšãå¯èœã«ããŸããAppMaster ãã©ãããã©ãŒã ã䜿çšãããšãGo ã¢ããªã±ãŒã·ã§ã³ãæå€§ 10 åã®éãã§ã3 åã®ã³ã¹ãå¹çã§éçºã§ããå¹ åºãæ©èœæ§ãšãŠãŒã¹ã±ãŒã¹ãã«ããŒã§ããŸãã
ãããã質å
Goã¯ãGolangãšããŠãç¥ããã2007幎ã«Googleã§äœããããªãŒãã³ãœãŒã¹ã®ããã°ã©ãã³ã°èšèªã§ããå¹çæ§ãã·ã³ãã«ããã¹ã±ãŒã©ããªãã£ãéèŠããŠèšèšãããŠããŸãã
Goã¯ãã³ã³ãã€ã«èšèªã®æ§èœãšã¹ã¯ãªããèšèªã®ã·ã³ãã«ããšèªã¿ããããå ŒãåããŠããŸããåæå®è¡ãã¬ããŒãžã³ã¬ã¯ã·ã§ã³ã®ãµããŒããçµã¿èŸŒãŸããŠãããã·ã³ãã«ã§ããããããããšã«éç¹ã眮ããŠããŸãã
Goã«ã¯ãéçåä»ããèªåã¡ã¢ãªç®¡çïŒã¬ããŒãžã³ã¬ã¯ã·ã§ã³ïŒã䞊è¡ããã°ã©ãã³ã°ã®çµã¿èŸŒã¿ãµããŒãïŒãŽã«ãŒãã³ããã£ãã«ïŒãã·ã³ãã«ã§è¡šçŸåè±ããªæ§æãè±å¯ãªæšæºã©ã€ãã©ãªãšãã£ãç¹åŸŽããããŸãã
Goã«ã¯ããŽã«ãŒãã³ããã£ãã«ã«ãã䞊è¡åŠçã®ãµããŒããçµã¿èŸŒãŸããŠããŸãããŽã«ãŒãã³ã¯è»œéãªã¹ã¬ããã§ã䞊è¡ã³ãŒããç°¡åã«èšè¿°ããããšãã§ããŸãããã£ãã«ã¯ããŽã«ãŒãã³éã®éä¿¡ãšåæã«äœ¿çšãããŸãã
ã¯ããGoã«ã¯ "go modules "ãšåŒã°ãããã«ãã€ã³ããã±ãŒãžãããžã¡ã³ãã·ã¹ãã ããããŸããããã«ãããäŸåé¢ä¿ã管çããå€éšããã±ãŒãžãç°¡åã«ãããžã§ã¯ãã«ã€ã³ããŒãããããšãã§ããŸãã
ãã¡ããã§ãïŒGoã®ã·ã³ãã«ããšäžŠè¡åŠçã®çµã¿èŸŒã¿ãµããŒãã¯ãå€§èŠæš¡ã¢ããªã±ãŒã·ã§ã³ã®éçºã«æé©ã§ããGoogleãå«ãå€ãã®äŒæ¥ãã髿§èœã§ã¹ã±ãŒã©ãã«ãªã·ã¹ãã ãæ§ç¯ããããã«Goã䜿çšããŠããŸãã
ããŒã³ãŒãã»ãã©ãããã©ãŒã ã¯ããŠãŒã¶ãŒãåŸæ¥ã®ã³ãŒããæžãããšãªããœãããŠã§ã¢ã»ã¢ããªã±ãŒã·ã§ã³ãæ§ç¯ããããšãå¯èœã«ããŸãããããã®ãã©ãããã©ãŒã ã¯ãèŠèŠçãªã€ã³ã¿ãŒãã§ã€ã¹ãšããŠãŒã¶ãŒãè¿ éãã€å®¹æã«ã¢ããªã±ãŒã·ã§ã³ãäœæããããã«æ§æããããšãã§ããäºåæ§ç¯ãããã³ã³ããŒãã³ããæäŸããŸããGo ã¯no-code èšèªã§ã¯ãããŸããããAppMaster.io ãªã©ã®no-code ãã©ãããã©ãŒã ãšçµ±åããããšãã§ããŸããAppMaster.io ã¯ç¹å®ã®no-code ãã©ãããã©ãŒã ã§ãã³ãŒãã£ã³ã°ã¹ãã«ãå¿ èŠãšãããããžã¥ã¢ã«ã€ã³ã¿ãŒãã§ã€ã¹ã䜿çšããŠã«ã¹ã¿ã ã¢ããªã±ãŒã·ã§ã³ãäœæã§ããããã«ããŸããdrag-and-drop ã®æ©èœãæ§ç¯æžã¿ã®ãã³ãã¬ãŒããããŸããŸãªããŒã¿ãœãŒã¹ãAPIãšã®çµ±åãªãã·ã§ã³ãçšæãããŠããŸãã
ãããGoã«ã¯Webéçºã«é©ããã©ã€ãã©ãªããã¬ãŒã ã¯ãŒã¯ãæã£ãŠããã®ã§ããGoã§Webéçºãè¡ãããã®æã人æ°ã®ãããã¬ãŒã ã¯ãŒã¯ã¯ãGinããšåŒã°ãããã®ã§ãããä»ã«ããEchoããRevelããBeegoããªã©ãããã€ããããŸãã


