2: GO 기초 지식

package main

import (
	"fmt"
)

func main() {
	c()
}

// 1,  
func test1() {
	//-----------------------------1.1    
	var v1 int
	var v2 string
	var v3 [10]int //  
	var v4 []int   //    
	var v5 struct {
		f int
	}
	var v6 *int           //  
	var v7 map[string]int //key string  value int map
	var v8 func(a int) int
	//-----------------------------1.2     
	var v9 int = 10
	var v10 = 10
	v11 := 10
	//-----------------------------1.3    
	//           ,             ,       “_”   
	_, _, nickName := GetName()

}

//1.3       
func GetName() (firstName, lastName, nickName string) {
	return "michael", "ma", "liang"
}

// :  
func test2() {
	//-----------------------------2.1   
	const Pi float64 = 3.14159265358979323846
	const zero = 0.0 //
	const (
		size int64 = 1024
		eof        = -1 //
	)
	const u, v float32 = 0, 3
	const a, b, c = 3, 4, "foo"
	//-----------------------------2.2      
	//true false iota;iota    ,           ,   const         0,    const    ,     iota   1
	const ( // iota    0
		c0 = iota // c0 == 0
		c1 = iota // c1 == 1
		c2 = iota // c2 == 2
	)
	const (
		a1 = 1 << iota // a == 1 (iota   const      0)
		b1 = 1 << iota // b == 2
		c3 = 1 << iota // c == 4
	)
	const (
		u1          = iota * 42 // u == 0
		v12 float64 = iota * 42 // v == 42.0
		w           = iota * 42 // w == 84
	)
	const x = iota // x == 0 (  iota     0 )
	const y = iota //y==0   
	//-----------------------------2.3  
	//          ,  
	const (
		Sunday = iota
		Monday
		Tuesday
		Wednesday
		Thursday
		Friday
		Saturday
		numberOfDays
	)

}

// :  
func test3() {
	//-----------------------------3.1:    
	//    :bool
	//  :int8 byte int16 int uint uintptr
	//    :float32 float64
	//    :complex64 complex128
	//   :string
	//    :rune
	//    :error
	//-----------------------------3.2:    
	//  
	//  
	//  
	//  
	//  
	//   
	//  

}

// :    

func test4() {
	//-----------------------------4.1  
	switch i {
	case 0:
		fmt.Printf("0")
	case 1:
		fmt.Printf("1")
	case 2:
		fallthrough
	case 3:
		fmt.Printf("3")
	case 4, 5, 6:
		fmt.Printf("4, 5, 6")
	default:
		fmt.Printf("Default")
	}

	switch {
	case 0 <= Num && Num <= 3:
		fmt.Printf("0-3")
	case 4 <= Num && Num <= 6:
		fmt.Printf("4-6")
	case 7 <= Num && Num <= 9:
		fmt.Printf("7-9")
	}
	//-----------------------------4.2  
	sum := 0
	for i := 0; i < 10; i++ {
		sum += i
	}
	sum2 := 0
	for {
		sum2++
		if sum2 > 100 {
			break
		}
	}
	//-----------------------------4.3  
	//     

	it := 0
HERE:
	fmt.Println(i)
	it++
	if i < 10 {
		goto HERE
	}
	//-----------------------------4.4  
	if a < 5 {
		return 0
	} else {
		return 1
	}

}

// :  
//-----------------------------5.1    
//func     (    )   {         }
//         
func ImAfunc(a int, b int) (ret int, err error) {
	if a < 0 || b < 0 {
		err = errors.New("Should be non-negative numbers!")
		return
	}
	return a + b, nil
}

//-----------------------------5.2    
func a() {
	//       
	imafc, err := ImAfunc(1, 2)
	fmt.Println(imafc, err)
}

//-----------------------------5.3      
func myfunc(args ...int) {
	for _, arg := range args {
		fmt.Println(arg)
	}
}

//  
func b() {
	myfunc(1, 2, 3, 4, 5, 6, 7)
}

//-----------------------------5.4    
//  ImAfunc  
//-----------------------------5.5    
//  1
package main

import (
	"fmt"
)

func main() {
	func(a, b int) (sum int) {
		sum = a + b
		fmt.Println(sum)
		return
	}(1, 2)//              
}
//  2
package main

import (
	"fmt"
)

func main() {
	nm := func(a, b int) (sum int) {
		sum = a + b
		fmt.Println(sum)
		return
	}
	nm(1, 2)
}
// :    
func Foo(param int)(n int, err error) {
// ...
}
//      
n, err := Foo(0)
if err != nil {
//     
} else {
//      
}
// :defer
//-----------------------------7.1
func CopyFile(dst, src string) (w int64, err error) {
	srcFile, err := os.Open(src)
 	if err != nil {
	return
	}
	defer srcFile.Close()
	dstFile, err := os.Create(dstName)
	if err != nil {
		return
	}
	defer dstFile.Close()
	return io.Copy(dstFile, srcFile)
}
//-----------------------------7.2
//panic() recover()
//     

좋은 웹페이지 즐겨찾기