SlideShare a Scribd company logo
1 of 49
Download to read offline
export GOPATH=$HOME/go
export PATH=$GOPATH/bin:$PATH
$GOPATH
    ├── bin
    ├── pkg
    └── src
 $ go install 
 $ go build 
 $GOPATH/src/github.com/nametake/myapp 
 ‐ 
 ‐ 
 foo‐bar‐baz   baz 
 _ 
 _ 
※
package main
import . "fmt"
func main() {
    Println("period import")
}
 $GOPATH 
 $GOPATH/src/github.com/user/myapp/main.go 
package main
func main() {
    ~~~
}
 myapp 
 $GOPATH/src/github.com/user/myapp/cmd/myapp/main.go 
 cmd/myapp‐batch 
file, err := os.Open("file.go")
if err != nil {
    return err
}
type ParseError struct {
    Line, Col int
}
func (p ParseError) Error() string {
    return fmt.Sprintf(`parse error on line %d, 
                        column %d`, p.Line, p.Col)
}
switch err := err.(type) {
case ParseError:
    PrintParseError(err)
}
file, err := os.Open("file.go")
if err != nil {
    return err // ← 
}
 fmt.Errorf 
file, err := os.Open("file.go")
if err != nil {
    return fmt.Errorf(`failed file open 
                       in foo: %s`, err)
}
 : 
file, err := os.Open("file.go")
if err != nil {
    return errors.Wrap(`failed file open 
                        in foo: %s`, err)
}
 errors 
 fmt.Errorf 
 fmt.Errorf 
 errors.Cause(err) 
func TestFoo(t *testing) {
    // Foo
}
func TestSuccessFoo(t *testing) {
}
func TestFailedFoo(t *testing) {
}
func TestFailedFooAtBarData(t *testing) {
}
 ‐run 
func Fib(n int) int {
    if n < 2 {
        return n
    }
    return Fib(n‐1) + Fib(n‐2)
}
var fibTests = []struct {
    n        int // input
    expected int // expected result
}{
    {1, 1},
    {2, 1},
    {3, 2},
    {4, 3},
    {5, 5},
    {6, 8},
    {7, 13},
}
func TestFib(t *testing.T) {
    for _, tt := range fibTests {
        actual := Fib(tt.n)
        if actual != tt.expected {
            t.Errorf("Fib(%d): expected %d, actual %d",
                     tt.n, tt.expected, actual)
        }
    }
}
 _test   _test 
 package foo   package foo_test 
 ‐race 
type Talker interface {
    Talk() string
}
※
err := dbmap.Insert(user)
trans, _ := dbmap.Begin()
trans.Insert(user)
err := trans.Commit()
type updater interface {
    Update(list ...interface{}) (int64, error)
}
func changeStatus(u updater, user *User) error {
    if user.IsLogin {
        user.Status = "active"
    } else {
        user.Status = "inactive"
    }
    row, err := u.Update(user)
    if err != nil {
        return err
    }
    return nil
}
type updater interface {
    Update(list ...interface{}) (int64, error)
}
type User struct {
    Name string
    Age int
}
type UserID string
func (u *UserID) Valid() bool{
    ~~~ID ~~~
}
func User(id UserID) *User {
    ~~~User ~~~
}
Go言語勉強会資料

More Related Content

Viewers also liked

Introduction to Vim 8.0
Introduction to Vim 8.0Introduction to Vim 8.0
Introduction to Vim 8.0k-takata
 
エディタの壁を越えるGoの開発ツールの文化と作成法
エディタの壁を越えるGoの開発ツールの文化と作成法エディタの壁を越えるGoの開発ツールの文化と作成法
エディタの壁を越えるGoの開発ツールの文化と作成法Takuya Ueda
 
AWSでアプリ開発するなら 知っておくべこと
AWSでアプリ開発するなら 知っておくべことAWSでアプリ開発するなら 知っておくべこと
AWSでアプリ開発するなら 知っておくべことKeisuke Nishitani
 
DevOpsとか言う前にAWSエンジニアに知ってほしいアプリケーションのこと
DevOpsとか言う前にAWSエンジニアに知ってほしいアプリケーションのことDevOpsとか言う前にAWSエンジニアに知ってほしいアプリケーションのこと
DevOpsとか言う前にAWSエンジニアに知ってほしいアプリケーションのことTerui Masashi
 
Sarvesh Singh Resume
Sarvesh Singh Resume Sarvesh Singh Resume
Sarvesh Singh Resume sarvesh singh
 
Gost r 53938 2010
Gost r 53938 2010Gost r 53938 2010
Gost r 53938 2010Raphael254
 
україна країна нескорених (1)
україна   країна нескорених (1)україна   країна нескорених (1)
україна країна нескорених (1)yanaanya
 
AKKA Technologies Singapore Services
AKKA Technologies Singapore ServicesAKKA Technologies Singapore Services
AKKA Technologies Singapore ServicesPierre-Yves LAZIES
 
appraisal of groundwater quality in ado ekiti metropolitan area, nigeria
appraisal of groundwater quality in ado ekiti metropolitan area, nigeriaappraisal of groundwater quality in ado ekiti metropolitan area, nigeria
appraisal of groundwater quality in ado ekiti metropolitan area, nigeriaIJAEMSJORNAL
 
Equipment Financing & Leasing Budget
Equipment Financing & Leasing BudgetEquipment Financing & Leasing Budget
Equipment Financing & Leasing BudgetFidelity Capital
 
BAEA: Architect Café 27/03/2014: Linking EA to change management
BAEA: Architect Café 27/03/2014: Linking EA to change managementBAEA: Architect Café 27/03/2014: Linking EA to change management
BAEA: Architect Café 27/03/2014: Linking EA to change managementBAEA
 

Viewers also liked (16)

Introduction to Vim 8.0
Introduction to Vim 8.0Introduction to Vim 8.0
Introduction to Vim 8.0
 
エディタの壁を越えるGoの開発ツールの文化と作成法
エディタの壁を越えるGoの開発ツールの文化と作成法エディタの壁を越えるGoの開発ツールの文化と作成法
エディタの壁を越えるGoの開発ツールの文化と作成法
 
AWSでアプリ開発するなら 知っておくべこと
AWSでアプリ開発するなら 知っておくべことAWSでアプリ開発するなら 知っておくべこと
AWSでアプリ開発するなら 知っておくべこと
 
DevOpsとか言う前にAWSエンジニアに知ってほしいアプリケーションのこと
DevOpsとか言う前にAWSエンジニアに知ってほしいアプリケーションのことDevOpsとか言う前にAWSエンジニアに知ってほしいアプリケーションのこと
DevOpsとか言う前にAWSエンジニアに知ってほしいアプリケーションのこと
 
Sarvesh Singh Resume
Sarvesh Singh Resume Sarvesh Singh Resume
Sarvesh Singh Resume
 
Penguinsrock
PenguinsrockPenguinsrock
Penguinsrock
 
Gost r 53938 2010
Gost r 53938 2010Gost r 53938 2010
Gost r 53938 2010
 
україна країна нескорених (1)
україна   країна нескорених (1)україна   країна нескорених (1)
україна країна нескорених (1)
 
tid
tidtid
tid
 
AKKA Technologies Singapore Services
AKKA Technologies Singapore ServicesAKKA Technologies Singapore Services
AKKA Technologies Singapore Services
 
appraisal of groundwater quality in ado ekiti metropolitan area, nigeria
appraisal of groundwater quality in ado ekiti metropolitan area, nigeriaappraisal of groundwater quality in ado ekiti metropolitan area, nigeria
appraisal of groundwater quality in ado ekiti metropolitan area, nigeria
 
Comte e Marx
Comte e MarxComte e Marx
Comte e Marx
 
Plagiarism.pptx ics
Plagiarism.pptx icsPlagiarism.pptx ics
Plagiarism.pptx ics
 
Equipment Financing & Leasing Budget
Equipment Financing & Leasing BudgetEquipment Financing & Leasing Budget
Equipment Financing & Leasing Budget
 
BAEA: Architect Café 27/03/2014: Linking EA to change management
BAEA: Architect Café 27/03/2014: Linking EA to change managementBAEA: Architect Café 27/03/2014: Linking EA to change management
BAEA: Architect Café 27/03/2014: Linking EA to change management
 
Search engines
Search enginesSearch engines
Search engines
 

Go言語勉強会資料