2013/06/29


先日、Go言語開発チームはリポジトリ内にあった殆どのMakefileを削除した。私(訳者)は混乱したし不安にもなった。しかしそれは私がこれまでの習慣と異なる場面に遭遇した事による物だと気付いた。その事を色濃く書かれたいる記事があったので紹介したい。Go言語を知らない人でも面白く読めると思います。
Are You Fuckign Coding Me!? - The go tool
http://areyoufuckingcoding.me/2012/02/14/the-go-tool/
本訳を許諾してくれたnu7hatchに感謝したい。(Thanks to nu7hatch)

THE GO TOOL


go go tool makefile go tool

...


go toolgo nuts gogo tool使

go tool便


Ruby on Rails Rails沿
IMPOSSIBRU!

go tool:


go build - 

go get - 

go test - 

go install - 

go doc - 

go fmt - 

go run - 

go tool - 

...


Go makefile go GOPATHgo ~/.bashrc:
GOPATH="/home/nu7/gocode"

...gogo tool go? : $ ls /home/nu7/gocode/
bin   pkg   src

src pkgcmd

GOPATHPATHgo go install


... go tool Goimportpath :
import "github.com/nu7hatch/gouuid"

import path URL go getimport path go build

go get使:
$ go get package-name

...  gofoogo get foo 使:

$ cd ~/gocode/src/foo
$ go get .

go toolimport path  ... (3)使使foo:
$ go get ./... 
go go get-u:
$ go get -u package-name


go tool Go toolHEAD
GREEN MASTER MOTHERFUCKER! DO YOU HAVE IT?

() API

使 go tool

:







使API

API

fork使

... 


...


Okgogo build使 go get使:
$ go get github.com/nu7hatch/gouuid
go install使 ()$GOPATH/pkg$GOPATH/cmd

go tool :
$ ls
_bar.go foo.go
$ go build .

_bar.go


CGOC


cgoC Ccgogo build

cgogo users wiki
C C go build.h.c

?stdio.hprintf使echo wikigoC printf github:

echo.h:
#ifndef _ECHO_H_
#define _ECHO_H_

#include <stdio.h>

void echo(char*);

#endif /* _ECHO_H_ */

echo.c:
#include "echo.h"

void echo(char* s)
{
    printf("%s\n", s);
}

echo.go:
package main

/*
#include <stdlib.h>
#include "echo.h"
*/
import "C"

import (
    "flag"
    "unsafe"
    "strings"
)

func main() {
    flag.Parse()
    cs := C.CString(strings.Join(flag.Args(), " "))
    C.echo(cs)
    C.free(unsafe.Pointer(cs))
}

go build C
NOT BAD

プラットフォーム固有のビルド


go build(: file_GOOS_GOARCH.go  file_GOARCH.go):

foo_darwin_amd64.go
foo_386.go
foo.go


C:

foo_amd64.c
foo_386.c
foo.h
foo.go


 go tool

Ok

Makefile


makefile使 便 MakefileC(webrocketmakefile使)

...  echo:

echo/
pkg/
echo/
echo.c
echo.h
echo.go
cmd/
echo/
echo.go


pkg/echoCprintf cmd/echo使 cmd/echo:
package main

import (
    "github.com/nu7hatch/cgoecho2/pkg/echo"
    "flag"
)

func main() {
    flag.Parse()
    echo.Echo(flag.Args()...)
}

Note: slice... sliceRuby*args

Makefile: all: echo-pkg echo-cmd

echo-pkg:
    go build ./pkg/echo

echo-cmd:
    go build ./cmd/echo

makego使:
$ go get github.com/nu7hatch/cgoecho2/cmd/echo
使:
$ go build ./...
() makefile使


go tool /使 ...go-nutsIRC 鹿...

使easy_installrubygemsbuilder ...  :) go tool...
...

goGophers
Posted at by | Edit