Go语言入门笔记
发布时间:2020-12-16 19:15:18 所属栏目:大数据 来源:网络整理
导读:格式化 Go语言中为了防止格式化问题引发争论,制作了一个格式化工具 gofmt ,在写完代码之后只需要 gofmt -w *.go 就可以用统一的格式(比如对齐,缩进)来重写你的代码, -w 参数是重写你的文件,不加的话只会打印你的文件内容 命名 一个包里面的变量如果要
格式化Go语言中为了防止格式化问题引发争论,制作了一个格式化工具 命名
分号Go语言中语句也是由分号来结尾的,只是这些语句不显式的出现在源代码中,词法分析器会在编译过程中为每句语句的结尾添加上分号。 由于分号添加的规则,所以条件控制,循环,函数等语句的左大括号必须不能另起一行,否则会因为添加分号导致错误。 控制结构循环只有 // 如同 C 的 for 循环
for init; condition; post { }
// 如同 C 的 while 循环
for condition { }
// 如同 C 的 for(;;) 循环
for { }
若你想遍历数组、切片、字符串或者映射,或从信道中读取消息, range 子句能够帮你轻松实现循环。 for key,value := range oldMap {
newMap[key] = value
}
可以省略第二个键,但是要省略第一个键必须用
var t interface{}
t = functionOfSomeType()
switch t := t.(type) {
default:
fmt.Printf("unexpected type %T",t) // %T prints whatever type t has
case bool:
fmt.Printf("boolean %tn",t) // t has type bool
case int:
fmt.Printf("integer %dn",t) // t has type int
case *bool:
fmt.Printf("pointer to boolean %tn",*t) // t has type *bool
case *int:
fmt.Printf("pointer to integer %dn",*t) // t has type *int
}
Loop:
for n := 0; n < len(src); n += size {
switch {
case src[n] < sizeOne:
if validateOnly {
break
}
size = 1
update(src[n])
case src[n] < sizeTwo:
if n+1 >= len(src) {
err = errShortInput
break Loop
}
函数
func ReadFull(r Reader,buf []byte) (n int,err error) {
for len(buf) > 0 && err == nil {
var nr int
nr,err = r.Read(buf)
n += nr
buf = buf[nr:]
}
return
}
数据数据有两种分配方式
切片
映射
append
func append(slice []T,elements ...T) []T
x := []int{1,2,3}
x = append(x, 4, 5, 6)
x := []int{1,2,3}
y := []int{4,5,6}
x = append(x,y...)
常量
const (
// 通过赋予空白标识符来忽略第一个值
_ = iota // ignore first value by assigning to blank identifier
KB ByteSize = 1 << (10 * iota)
MB
GB
TB
PB
EB
ZB
YB
)
变量
init
方法
func (p *ByteSlice) Write(data []byte) (n int,err error) {
slice := *p
*p = slice
return len(data),nil
}
接口
type Abser interface {
Abs() float64
}
func main() {
var a Abser
f := MyFloat(-math.Sqrt2)
a = f // a MyFloat implements Abser
fmt.Println(a.Abs())
}
type MyFloat float64
func (f MyFloat) Abs() float64 {
if f < 0 {
return float64(-f)
}
return float64(f)
}
str,ok := value.(string)
空白标识符
import (
"fmt"
"io"
"log"
"os"
)
var _ = fmt.Printf // For debugging; delete when done. // 用于调试,结束时删除。
var _ io.Reader // For debugging; delete when done. // 用于调试,结束时删除。
func main() {
fd,err := os.Open("test.go")
if err != nil {
log.Fatal(err)
}
// TODO: use fd.
_ = fd
}
goroutine
channel
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |