1ãä¸è½½goçzipæ件ã并ä¸ä¸å®è¦ææ件解åå°c:\goç®å½ä¸ã
2ãé
ç½®windowsçé«çº§ç¯å¢åéãå
æ¬ï¼GOROOTãGOOSãGOBINãGOARCHã并ä¸å¨pathåééé¢æc:\go\binå å
¥ã以便å¯ä»¥å¨å½ä»¤è¡ç´æ¥è¿è¡goå½ä»¤ã
举ä¾ï¼æçæºå¨ï¼
GOPATH= c:\go;c:\go\src;F:\workspace\goSample01;
GOBIN=c:\go\bin;F:\workspace\goSample01\bin;
å
¶ä¸ï¼c:\goæ¯goçå®è£
è·¯å¾ï¼
F:\workspace\goSample01æ¯æåçgoè¯è¨é¡¹ç®çå·¥ç¨ç®å½ï¼
F:\workspace\goSample01\binæ¯goè¯è¨é¡¹ç®çå·¥ç¨ç®å½ä¸çå¯æ§è¡æ件路å¾;
3ãå¨å®æç¯å¢åéé
ç½®åï¼æå¼ä¸ä¸ªå½ä»¤è¡çªå£ï¼ç´æ¥è¾å
¥goï¼ç¶åå车ï¼ççæ¯å¦åºç°goç帮å©ä¿¡æ¯ãå¦æåºç°ï¼é£ä¹goçåºæ¬ç¯å¢å°±OKäºã
注æï¼è¿ä¸ªåºæ¬ç¯å¢ä¸å
å«å¼åå·¥å
·ï¼ä¹ä¸è½ç´æ¥ç¼è¯å¸¦C代ç çgoç¨åºã
4ã
(å¯é)为äºæ¯æImportè¿ç¨å
ï¼æ好è£
个gomingwãä¸è½½å°åï¼
http://code.google.com/p/gomingw/downloads/listãå¦æä¸çæ¯å缩å
ï¼è¯·æå®è§£åå°Cçãä¾å¦ï¼C:\gowin-envãéé¢æ个Console.batæ¯ä»¥å使ç¨go
getçç¯å¢ã举ä¾ï¼æ个æ件a.go,éé¢import(
"fmt"
"github.com/astaxie/beedb"
_ "github.com/ziutek/mymysql/godrv"
为äºç¼è¯è¯¥a.goæ件ï¼éè¦å¯å¨Console.batï¼ç¶åå¨è¯¥å½ä»¤è¡çªå£ï¼è¿å
¥c:\go\srcç®å½ä¸ï¼æ§è¡go getgithub.com/astaxie/beedb
Go get github.com/ziutek/mymysql/godrv .
Goä¼èªå¨ä¸è½½è¯¥è¿ç¨å
并ç¼è¯åå®è£
è¿äºå
ã
é
ç½®goclipseï¼å¯éï¼
ï¼å¦æä¸å欢eclipseå¼åå·¥å
·ï¼è¯·è·³è¿è¿ä¸ªé
ç½®ãï¼
1ãä¸è½½å¹¶å®è£
goclipseæ件ãGoclipseæ¯goè¯è¨for eclipseçæ件ï¼ä¸è½½å°åï¼
http://code.google.com/p/goclipse/2ãå¯å¨eclipse并å建go项ç®ãç¶åå个æç®åçhelloworld.goæ件ï¼å¹¶è¿è¡ã代ç å¦ä¸ï¼
packagemainimport"fmt"func main(){ fmt.Printf("hello, world")}
é
ç½®gocodeï¼å¯éï¼
å¦æä¸éè¦goè¯æ³è¾
å©åeclipseéé¢çï¼æALT+/ï¼å¼¹åºgoè¯è¨èªå¨è¾
å©åè½ï¼è¯·è·³è¿è¿ä¸ªé
ç½®ã
1ãä¸è½½gocodeçzipæ件ï¼è§£ååæ¾å¨goçbinç®å½ä¸ã
2ãä¸è½½å¹¶å®è£
Git软件ã并ä¸å¨pathéé¢é
ç½®gitçæ§è¡è·¯å¾ãä¾å¦c:\git\bin
3ãå¨å½ä»¤è¡æ§è¡ï¼go build .\gocodeãå¦æä¸åæ£å¸¸ï¼é£ä¹å°ä¼ç¼è¯çæä¸ä¸ªgocode.exeæ件å¨goçbinç®å½ä¸ãå¦æç¼è¯å¤±è´¥ï¼é£ä¹å°±è½¬ç¬¬4æ¥ã
4ãå¦æ第3æ¥ç´æ¥ç¼è¯gocodeæºæ件æåï¼é£å°±ç´æ¥å°ç¬¬5æ¥ãå¦åï¼å°±éè¦éè¿gitä¸è½½gocodeæºæ件ï¼ç¶ååç¼è¯ãå¨å½ä»¤è¡æ§è¡ï¼go get -u github.com/nsf/gocode ãå°±ä¼çægocode.exeæ件ã
5ãå¨goclipseæ件éé¢æå®gocodeçè·¯å¾ãå°±å¯ä»¥å¨elcipseéé¢è°ç¨gocodeæ¥å¸®å©åç¼ç äºã
ä»å¼åå·¥å
·è¿åçï¼goè¯è¨è¿ä¸å¤æçï¼å¼åå·¥å
·é½è¿ä¸å®åï¼æå¾
æ¹è¿ã
ä¸è½½go-touræç¨æºä»£ç ï¼å¯éï¼
Googleæ个å¨çº¿è¿è¡goè¯è¨çæç¨ï¼
http://tour.golang.org/#2ï¼ï¼å¾ä¸éãæ¯æå¨webä¸ç´æ¥è¿è¡å¤§é¨åçgoç¨åºï¼æ³äºè§£è¿ä¸ªæç¨çæºä»£ç çæåå¯ä»¥éè¿ä»¥ä¸æ¹å¼è·åãå¦æ没å
´è¶£ï¼å¯ä»¥è·³è¿è¿ä¸ªæ¥éª¤ã
1ãä¸è½½å®è£
Mercurial软件ã
2ãå¨å½ä»¤è¡ä¸è¾å
¥ï¼
hg clone
ä½ä¸ºæµè¯ç¨çãå¦ææhttpæ¹æhttpsåè®®ï¼ä¸è½½å°±ä¼å¤±è´¥ãæä¸æã
ç¼è¯å¸¦è°ç¨C代ç çgoæ件ï¼å¯éï¼
1ã为äºå¨windowsä¸ç¼è¯å¸¦C代ç çgoç¨åºï¼ä½ é¦å
éè¦ä¸è½½å¹¶å®è£
MinGWæè
Cygwinã
2ãé¦éå®è£
MinGWãå¨å®è£
MinGWä¹åï¼è®°å¾è¦æMinGWå®è£
ç®å½\binè·¯å¾è®¾ç½®å¨pathç¯å¢åééé¢ï¼ä»¥ä¾¿è½å¨dosçªå£ä¸ç´æ¥è°ç¨gccã
3ãä¸è½½ä¸ä¸ªgowin-envãä¸è½½å°åï¼gowin-envãä¸è½½å解åå°æ个ç®å½ä¸ï¼ä¾å¦ï¼C:\gowin-env. ç¶åï¼ç¼è¾go-env.batãé
ç½®ç¸å
³çgoåæ°ãä¾å¦ï¼æçé
ç½®æ¯ï¼
set GOARCH=386
set GOOS=windows
set GOROOT=c:\go
set GOBIN=%GOROOT%\bin
set GOPATH=%GOROOT%;F:\workspace\goSample01;
设置好go-env.batåï¼å°±å¯ä»¥ç¹å»Console.batæ¥å¯å¨ç¼è¯åè¿è¡çªå£ã
4ãç¼åä¸ä¸ªå¸¦C代ç çgoç¨åºãä¾å¦ï¼testc.go
5ãç¼è¯
ä¾å¦ï¼
go build -compiler gccgo test_c.go
è¿è¡è°ç¨C代ç çgoæ件ï¼å¯éï¼
1ãtestc.go.
å建randç®å½ï¼ç¶åå¨randéé¢å建testc.go. 代ç å¦ä¸ï¼
package rand
/*
//
#include <stdio.h>
*/
import "C"
func PrintHello() {
C.puts(C.CString("Hello, world\n"))
}
2ãa.go
å¨randä¸å建a.go.代ç å¦ä¸ï¼
package rand
import "fmt"
func SayHello(name string){
fmt.Println(name)
}
3ãtest_import.go
å¨randçä¸ä¸çº§å建test_import.goã代ç å¦ä¸ï¼
package main
import "./rand"
func main(){
rand.SayHello("tom")
rand.PrintHello()
}
4ãè¿è¡test_import.go
go run test_import.go
å¨æµè¯å
¶å®å 个C代ç çæ¶åï¼åç°windowsçæ¬çcgoè¿æäºç¼è¯é®é¢ï¼åæ ·ç代ç 转移å°è¹æçXCODEä¸å°±æ²¡æé®é¢ãåæ¥ç»äºåç°åå äºï¼åæ¥æäºä¾åæ¯unixå¹³å°ä¸çï¼èå¨windowså¹³å°ä¸ï¼æ¹æ³åååæ°éè¦åè°æ´ã
ä¾å¦ï¼ä¸é¢ä»£ç å¨windowsä¸ç¼è¯æ¥ä¸å é误ã
package rand
/*
#include <stdlib.h>
*/
import "C"
func Random() int {
return int(C.random())
}
func Seed(i int) {
C.srandom(C.uint(i))
}
è¿ééè¦æreturn int(C.random()) ä¿®æ¹ä¸ºâreturn int(C.rand())â
C.srandom(C.uint(i))ä¿®æ¹ä¸ºâC.srand(C.uint(i))âç¼è¯å°±OKäºã