GO语言学习笔记

GO语言

DAY 1

Cent OS7 安装GO环境

rpm -Uvh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm

yum install -y golang

验证

go -version

Go is a tool for managing Go source code.

Usage:

go <command> [arguments]

The commands are:

bug        start a bug report

build      compile packages and dependencies

clean      remove object files and cached files

doc        show documentation for package or symbol

env        print Go environment information

fix        update packages to use new APIs

fmt        gofmt (reformat) package sources

generate    generate Go files by processing source

get        add dependencies to current module and install them

install    compile and install packages and dependencies

list        list packages or modules

https://blog.csdn.net/li_xue_zhao/article/details/79818390 ZSH OH-MY-ZSH

https://blog.csdn.net/boling_cavalry/article/details/88598828 VIM-GO设置GO语法在VIM中高亮

编写hello

package main

//1.go以包作为管理单位

//2.每个文件必须先声明包

//3.程序必须有一个main包

import "fmt"  //导入包后必须要使用

//起始花括号必须跟在main后,不能另起一行

//同理花括号必须跟函数名同行

func main() {

fmt.Println("Hello GO")//Println P必须为大写,且Println()会自动换行

//结束花括号可以跟在语句后

}

go build xxx.go 编译go代码,生成一个可执行文件

go run xxx.go 执行GO代码,不生成文件

数据类型

作用:告诉编译器这个变量(值)应该以多大的内存存储

类型(同一类的数据)

变量命名规则:字母,下划线,数字

不能以数字开头

名字不能是关键字(break var go等等)

区分大小写

变量:程序运行期间可以改变的量

  声明 var XX(变量名) int(类型) //变量声明完后必须使用

  同一个{}里,声明的变量名是唯一的

  可以同时什么多个变量



  package main

  import "fmt"

  func main() {

  var a string

  //var a int

  a="test"

  //a=10 a如果不赋值直接打印,返回0

  fmt.Println(a)

  //fmt.Println("a = ", a)

}

  #返回结果test // a = 10

  package main

  import "fmt"


  func main() {

var a int

a=10

fmt.Println("a = ",a)

a*=2 //重新赋值

fmt.Println("a=",a)

}

  #返回$ go run var1.go

  a =  10

  a= 20

  变量初始化:在声明变量的同时进行赋值

  var b int = 10 //初始化

  b = 20 //赋值

  自动推导类型,必须初始化,通过初始化的值确定类型(常用写法)

  c := 30 //这种写法不用声明变量,先声明b的类型,再给b赋值

  fmt.Printf("c type is %T\n", c)//%T变量所属类型,Printf中才可以使用占位符,Println中不行,占位符在""中识别为纯文本

  eg:Printf和Println的区别

package main

import "fmt"

func main() {

a:=10

fmt.Println("a =",a)

fmt.Printf("a = %d\n",a)

b,c:=20,30

fmt.Println("b =",b,"c =",c)

fmt.Printf("b = %d,c = %d\n",b,c)

}

  #返回a = 10

  a = 10

  b = 20 c = 30

  b = 20,c = 30 //注意各行的空格,保持返回值美观

多重赋值和匿名变量

a,b,c:=10,20,30 //多重赋值

交换a b的值

var tmp int

tmp = a

a = b

b = tmp

fmt.Printf("a = %d,b = %d\n",a,b)

go写法

i,j := 10,20

i,j = j, i

fmt.Printf("i = %d,j = %d\n",i,j)

#返回i = 20,j = 10

匿名变量

i,j = 10,20

tmp,_ = i,j // _ 匿名变量,丢弃数据不处理,配合函数返回值使用才有优势

fmt.Println("tmp =",tmp)

eg:

package main

import "fmt"

func test() (a,b,c int){

return 1, 2, 3

}

func main(){

var c,d,e int

c,d,e = test() //return 1,2,3

fmt.Printf("c = %d, d = %d, e = %d\n",c,d,e)

}

#返回c = 1, d = 2, e = 3

#搭配匿名变量,只返回d的值

func main(){

var c,d,e int

_,d,_ = test()

fmt.Printf("d = %d\n",d) //如果仍输出c = %d e = %d c,e 会设置值为0

}

#返回c = 0, d = 2, e = 0

常量的定义

运行期间不可以改变

使用const声明

func main(){

const a int = 10

const b = 10 //自动推导类型,常量不用使用:=

}

多个变量或者常量的定义

定义多个变量时的自动推导不用写:

eg:

package main

import "fmt"

func main(){

const(

i int = 20  // i = 20

j float64 = 6.28 //j = 6.28 可以自动推导类型

)

var (

a int =10  //a = 10

b float64 = 3.14 //b = 3.14 可以自动推导类型

)

fmt.Println("i =",i,"j =",j)

fmt.Printf("j type is %T\n",j)

fmt.Printf("a =%d,b =%f\n",a,b)  //float占位符为%F

fmt.Printf("b type is %T\n",b)

}

#返回i = 20 j = 6.28  //Println返回不补0

j type is float64

a =10,b =3.140000 //Printf返回补0

b type is float64

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,029评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,238评论 3 388
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,576评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,214评论 1 287
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,324评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,392评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,416评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,196评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,631评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,919评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,090评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,767评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,410评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,090评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,328评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,952评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,979评论 2 351

推荐阅读更多精彩内容

  • 1.Go 程序是通过 package 来组织的。只有 package 名称为 main 的包可以包含 main 函...
    pp_5793阅读 336评论 0 0
  • 在C语言中,五种基本数据类型存储空间长度的排列顺序是: A)char B)char=int<=float C)ch...
    夏天再来阅读 3,340评论 0 2
  • 1 Go语言中函数的声明如下: func 函数名 (变量名1,变量名2 变量类型1,变量名3 变量类型2)函数返回...
    pp_5793阅读 288评论 0 0
  • Go和Golang是什么关系? Go语言于2009年11月正式宣布推出,成为开放源代码项目,全称:"Go Prog...
    rectinajh阅读 827评论 0 1
  • fmt格式化字符串 格式:%[旗标][宽度][.精度][arg索引]动词旗标有以下几种:+: 对于数值类型总是输出...
    皮皮v阅读 1,092评论 0 3