go语言初记

断了今生、忘了曾经 提交于 2020-01-14 01:52:57

快速了解 http://go-tour-zh.appspot.com/welcome/1 (可以需要爬墙)

下面记录下了解go的过程,特别记录下与你脑子里原有“观念”不同的地方:

1.  声名 初始化,类型在后面,不一样

var a, b int 

var a,b =1,2var c, python, java = true, false, "no!"

a,b:=func fname(string,string)  //非声明,必须在func使用

短声明变量

函数中`:=` 简洁赋值语句在明确类型的地方,可以用于替代 var 定义。

函数外的每个语法块都必须以关键字开始(`var`、`func`、等等),`:=` 结构不能使用在函数外。

 

2.函数返回多个值

func swap(x, y string) (string, string) {  //x, y string 等价  x sring ,y string
  return y, x }

命名返回值

func swap(string, string) (x, y string) { #返回值分别命名为x,y   x= x+12  y= y+1
  return } // 空return实际返回的是x,y

3.对于声明了但没使用的变量,引入但没有使用的包,会引发错误,  go可以自动格式化源码  

func 函数体的第一个'{'必须在同一行(?试了不在一行格式不行,运行出错

 

4.包

每个 Go 程序都是由包组成的。

程序运行的入口是包 `main`。

package main

import (
	"fmt"
	"math/rand"
)

func main() {
	fmt.Println("My favorite number is", rand.Intn(10)) //先不管rand.Intn干什么的,按照惯例,包名与导入路径的最后一个目录一致。例如,`"math/rand"` 包由 package rand 语句开始
}

 

注意:导出名

在导入了一个包之后,就可以用其导出的名称来调用它。

在 Go 中,首字母大写的名称是被导出的。(算是一种惯例/约定,如python里_function _varname是私有一样) 

package main

import (
	"fmt"
	"math"
)

func main() {
	fmt.Println(math.pi)
}

Foo 和 FOO 都是被导出的名称。名称 foo 是不会被导出的 ,所以math.pi肯定不存在,可能Pi是存在的

 

5.基本类型

Go 的基本类型有Basic types

bool

string

int  int8  int16  int32  int64
uint uint8 uint16 uint32 uint64 uintptr

byte // uint8 的别名

rune // int32 的别名
// 代表一个Unicode码

float32 float64

complex64 complex128
package main

import (
	"fmt"
	"math/cmplx"
)

var (                                     //这样用很特别
	ToBe   bool       = false
	MaxInt uint64     = 1<<64 - 1
	z      complex128 = cmplx.Sqrt(-5 + 12i)
)

func main() {
	const f = "%T(%v)\n"
	fmt.Printf(f, ToBe, ToBe)      //bool(false)     fmt.Printf(f, MaxInt, MaxInt)  //uint64(18446744073709551615)        fmt.Printf(f, z, z)       //complex128((2+3i)) 不懂}          

 

6.类型转换 不同类型间转换需要显式进行,即使从int往int64转也得显式 (c是可以隐式转换的,溢出不提示)

 

7.循环只有for ,没有 while ,通过省略for的首尾式可以做到while一样的事 :for i < 10 {}   

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!