博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
go语言学习
阅读量:5948 次
发布时间:2019-06-19

本文共 3642 字,大约阅读时间需要 12 分钟。

hot3.png

1.go语言的安装

博主的环境是ubuntu14.04,所以安装配置go语言的环境直接就使用

sudo apt-get install golang

安装完毕后

203256_i3hC_1863518.png

2.hello world

代码如下

/* hello.go */package mainimport "fmt"func main(){        fmt.Println("Hello,World!")}

注意Println方法P为大写

然后在终端编译运行

go run hello.go

203908_4i6V_1863518.png

或者使用build命令生成可执行文件

go build

204504_ybj4_1863518.png

3.go的一些语法知识

go每一个单独语句不需要特殊的分隔线,默认以行分隔符作为语句分隔符

关键字var标记变量,const标记常量

变量的声明

package mainimport "fmt"func main(){    const ( a  = 0 ; b )    const( c = 0 ; d = 1 )    const e  = 3    const f int8 = 4    /* iota是和const一起使用的,代表该常量的行索引,从0开始 */    const ( g = iota ; h ; i )    const j = iota    var k int = 1    var  l int    l = 2    /* 默认为int */    var( m = 42949672960 ; n = 4294967296 )    var( o int8 = 1 ; p = 1 )    fmt.Println(a)    fmt.Println(b)    fmt.Println(c)    fmt.Println(d)    fmt.Println(e)    fmt.Println(f)    fmt.Println(g)    fmt.Println(h)    fmt.Println(i)    fmt.Println(j)    fmt.Println(k)    fmt.Println(l)    fmt.Println(m)    fmt.Println(n)    fmt.Println(o)    fmt.Println(p)}

221320_dYdw_1863518.png

go的数据类型大概有

Boolean Types
它们是布尔类型,它由两个预定义的常量:(a) true (b) false
Numeric Types
它们是算术类型,表示整数类型或b。在整个程序浮点值
String Types:
一个字符串类型代表组字符串值。它的值是一个字节序列。字符串是一次创造了稳定的类型,这是不可能改变一个字符串的内容。预声明的字符串类型为字符串
Derived Types:
它们包括:(a)指针类型,(b)数组类型,(c)结构类型,(d)联盟类型及(e)函数类型(f)切片类(g)函数类型(h)接口类型(i)地图类型(j)管道类型

Boolean Types

bool类型,变量值仅为true,false

不支持0, 1的赋值

package mainimport "fmt"func main(){    var a bool    a = true    fmt.Println(a)    a = false    fmt.Println(a)}

输出结果

210133_QrrN_1863518.png

Numeric Types

!!注意,无论定义任何数字类型,从测试结果来看,内存空间仍然占用了8个字节

带符号整型 int8 int16 int32 int64

不带符号整型  uint8 uint16 uint32 uint64

浮点数 float32 float64

复述 complex64 complex128

其他

byte 相同于 uint8

rune 相同于int32

uint 32位或64位

int 大小与uint一样

package mainimport "fmt"func main(){    fmt.Println(10/3)    fmt.Println(10E5)    fmt.Println(0x5)    var a int8    a = 12    fmt.Println(a)    var b int16    b = 12    fmt.Println(b)    /* 带符号,所以当c大于127或小于-127的时候会报错 */        var c int8        c = 127        fmt.Println(c)    /* 不带符号,所以当d大于255或小于0的时候会报错 */    var d uint8    d = 255    fmt.Println(d)    var e int    e = 4294967297    fmt.Println(e)    var f float32    f = 3.2    fmt.Println(f)    var g complex64    g = 3+2i    fmt.Println(g)}

214617_rs2A_1863518.png

String Types

组成字符串的最小单位是字符 , 存储的最小单位是字节,字符串本身不支持修改.

package mainimport "fmt"func main(){    /* 默认为int */    var a = 'a'    var b = "abc"    var c string = "abc"    fmt.Println(a)    fmt.Println(b)    fmt.Println(c)}

222657_SaIL_1863518.png

Derived Types

(a)指针类型

?似乎不支持数组指针

package mainimport "fmt"func main(){    var a int = 3    var b *int = &a    var c **int = &b    var d *int    fmt.Println(a)    fmt.Println(&a)    fmt.Println(b)    fmt.Println(*b)    fmt.Println(&b)    fmt.Println(*&b)    fmt.Println(&*b)    fmt.Println(c)    /* nil指针  */    fmt.Println(d)    fmt.Println(*d)}

134341_BPWg_1863518.png

(b)数组

package mainimport "fmt"func main(){    var a [2] int    var b = [2] int {1, 2}    var c = [2] int {3}    var d = [2][2] int{
{5,6}, {7,8}}    var e1 = 9    var e2 = 10    var e = [2] *int {&e1, &e2}    fmt.Println(a[0])    fmt.Println(a[1])    fmt.Println(b[0])    fmt.Println(b[1])    fmt.Println(c[0])    fmt.Println(c[1])    fmt.Println(d[0][0])    fmt.Println(d[0][1])    fmt.Println(d[1][0])    fmt.Println(d[1][1])        fmt.Println(e[0])    fmt.Println(e[1])}

145406_S1gE_1863518.png

(c)结构类型

package mainimport "fmt"type Person struct{    name string    age  int}func main(){    var a Person    var b *Person    b = &a    a.name = "kakaka"    a.age = 21    fmt.Println(a)    fmt.Println(a.name)    fmt.Println(a.age)    fmt.Println(&a)    fmt.Println(b)    fmt.Println(*b)    fmt.Println(b.name)    fmt.Println(b.age)    fmt.Println(&b.name)    fmt.Println(&b.age)}

151349_Hhp5_1863518.png

(d)联盟类型及(e)函数类型(f)切片类(g)函数类型(h)接口类型(i)地图类型(j)管道类型

转载于:https://my.oschina.net/kakakaka/blog/513656

你可能感兴趣的文章
2015年第21本:万万没想到,用理工科思维理解世界
查看>>
大家谈谈公司里的项目经理角色及职责都是干什么的?
查看>>
剑指offer
查看>>
Velocity魔法堂系列二:VTL语法详解
查看>>
NopCommerce架构分析之八------多语言
查看>>
转:Eclipse自动补全功能轻松设置
查看>>
mysql update操作
查看>>
Robots.txt - 禁止爬虫(转)
查看>>
MySQL数据库
查看>>
Mysql 监视工具
查看>>
SSH详解
查看>>
ASM概述
查看>>
【290】Python 函数
查看>>
godaddy域名转发(域名跳转)设置教程
查看>>
silverlight学习布局之:布局stackpanel
查看>>
理解并自定义HttpHandler
查看>>
从前后端分离到GraphQL,携程如何用Node实现?\n
查看>>
JavaScript标准库系列——RegExp对象(三)
查看>>
Linux Namespace系列(09):利用Namespace创建一个简单可用的容器
查看>>
oracle中create table with as和insert into with as语句
查看>>