加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

golang

发布时间:2020-12-16 19:13:46 所属栏目:大数据 来源:网络整理
导读:来源:http://golang-book.com/ golang 语法 //变量var x string = "Hello World"var x string//golang 字符串默认初始化是 “”,不会有nil出现x = "Hello World"var x = "Hello World"//多行字符串x := `abc`//非string 转string方法#string到int int,err:=

来源:http://golang-book.com/

golang 语法

//变量
var x string = "Hello World"
var x string
//golang 字符串默认初始化是 “”,不会有nil出现
x = "Hello World"
var x = "Hello World"
//多行字符串
x := `
a
b
c
`
//非string 转string方法
#string到int  
int,err:=strconv.Atoi(string)  
#string到int64  
int64,err := strconv.ParseInt(string,10,64)  
#int到string  
string:=strconv.Itoa(int)  
#int64到string  
string:=strconv.FormatInt(int64,10)  
x := 5
str1 := strconv.Itoa(x)
//常量
const x string = "Hello World"
//多个变量定义
var (
  a = 5
  b = 10
  c = 15
)
const(
   a = iota
   b
   c
)
//循环
i := 1
  for i <= 10 {
    fmt.Println(i)
    i = i + 1
  }

for i,value := range x {
  total += value
}

for i := 1; i <= 10; i++ {
    fmt.Println(i)
  }
//条件
if i % 2 == 0 {
  // even
} else {
  // odd
}
//golang 没有3目运算符
//switch 默认不会运行到下一个case (多条件使用,<case 1,2,3,4:>)。需要的话使用 fallthrough
t := time.Now()
    switch {
    case t.Hour() < 12:
        fmt.Println("It's before noon")
    default:
        fmt.Println("It's after noon")
    }

switch t := i.(type) {
        case bool:
            fmt.Println("I'm a bool")
        case int:
            fmt.Println("I'm an int")
        default:
            fmt.Printf("Don't know type %Tn",t)
        }
//数组
var x [5]int
len(x)
x := [5]float64{ 98,93,77,82,83 }
x := make([]float64,5)

arr := [5]float64{1,4,5}
x := arr[0:5]
arr[0:] == arr[0:len(arr)]
arr[:5] == arr[0:5]
arr[:]  == arr[0:len(arr)]

//数组操作
slice1 := []int{1,3}
slice2 := append(slice1,5) //添加4和5

slice1 := []int{1,3}
  slice2 := make([]int,2)
  copy(slice2,slice1)//复制

//map
x := make(map[string]int)
x["key"] = 10

elements := map[string]string{
  "H":  "Hydrogen","He": "Helium","Li": "Lithium","Be": "Beryllium","B":  "Boron","C":  "Carbon","N":  "Nitrogen","O":  "Oxygen","F":  "Fluorine","Ne": "Neon",}

//删除key
delete(x,1)
//ok是个bool值,map值存在是true
if name,ok := m["b"]; ok {
        fmt.Println(name,ok)
 }

//function 注意函数首字母大写为Public 小写为private

func f2() (r int) {
  r = 1
  return
}

func f() (int,int) {
  return 5,6
}

func add(args ...int) int {
  total := 0
  for _,v := range args {
    total += v
  }
  return total
}

func main() {
  xs := []int{1,3}
  fmt.Println(add(xs...))
}
//内建函数,其实就是看成类
func makeEvenGenerator() func() uint {
  i := uint(0)
  return func() (ret uint) {
    ret = i
    i += 2
    return
  }
}
func main() {
  nextEven := makeEvenGenerator()
  fmt.Println(nextEven()) // 0
  fmt.Println(nextEven()) // 2
  fmt.Println(nextEven()) // 4
}


//defer 会在函数return 前执行

f,_ := os.Open(filename)
defer f.Close()


//* 与 & 用法。类似于指针

func zero(xPtr *int) {
  *xPtr = 0
}
func main() {
  x := 5
  zero(&x)
  fmt.Println(x) // x is 0
}
//sturct 与interface
type Rectangle struct {
  x1,y1,x2,y2 float64
}
func (r *Rectangle) area() float64 {
  l := distance(r.x1,r.y1,r.x1,r.y2)
  w := distance(r.x1,r.x2,r.y1)
  return l * w
}

//go 没有构造函数,一般是使用全局函数NewXXX
func NewRectangle () *Rectangle{
    r := new(Rectangle)
    return r
}
r := Rectangle{0,10}
fmt.Println(r.area())

type Shape interface {
  area() float64
}

var f *os.File
if f,err = os.Open(url); err != nil{
     return
}
defer f.Close()
//readAt 等于seekAt and read.
f.ReadAt()

//interface 类型转换
value,ok := element.(Person); ok 
//golang 的继承不能叫继承,叫嵌套
//类似于在B中嵌套A的方法
struct A{
    name string
}
struct B{
    A
}
//在B中获取A对象 
var b = new(B)
var a = b.A

//golang init 函数
//包导入后会优先运行init函数
func init(){
    
}

//xml 使用namespace 并匹配任意节点
type Node struct {
    XMLName xml.Name
    Id string `xml:"http://schemas.android.com/apk/res/android id,attr"`
    Nodes   []Node   `xml:",any"`
}

常用命令

//运行
go run main.go
//包安装
go install
//测试
go test
//环境变量
go env
//包下载
go get golang.org/x/mobile
//版本
go version

项目搜索

https://github.com/golang/go/wiki/Projects

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读