GO语言基础(结构+语法+类型+变量)
GO语言基础(结构+语法+类型+变量)
Go语言结构
Go语言语法
Go语言类型
Go语言变量
Go 语言结构
- 包声明
- 引入包
- 函数
- 变量
- 语句 & 表达式
- 注释
package main
import "fmt"
func main() {
/* 这是我的第一个简单的程序 */
fmt.Println("Hello, World!")
}
- 第一行代码 package main 定义了包名。你必须在源文件中非注释的第一行指明这个文件属于哪个包,如:package main。package main表示一个可独立执行的程序,每个 Go 应用程序都包含一个名为 main 的包。
- 下一行 import "fmt" 告诉 Go 编译器这个程序需要使用 fmt 包(的函数,或其他元素),fmt 包实现了格式化 IO(输入/输出)的函数。
- 下一行 func main() 是程序开始执行的函数。main 函数是每一个可执行程序所必须包含的,一般来说都是在启动后第一个执行的函数(如果有 init() 函数则会先执行该函数)。
- 下一行 /*...*/ 是注释,在程序执行时将被忽略。单行注释是最常见的注释形式,你可以在任何地方使用以 // 开头的单行注释。多行注释也叫块注释,均已以 /* 开头,并以 */ 结尾,且不可以嵌套使用,多行注释一般用于包的文档描述或注释成块的代码片段。
- 下一行 fmt.Println(...) 可以将字符串输出到控制台,并在最后自动增加换行字符 \n。
- 当标识符(包括常量、变量、类型、函数名、结构字段等等)以一个大写字母开头,如:Group1,那么使用这种形式的标识符的对象就可以被外部包的代码所使用(客户端程序需要先导入这个包),这被称为导出(像面向对象语言中的 public);标识符如果以小写字母开头,则对包外是不可见的,但是他们在整个包的内部是可见并且可用的(像面向对象语言中的 protected )。
执行 Go 程序
- 打开编辑器如Sublime2,将以上代码添加到编辑器中。
- 将以上代码保存为 hello.go
- 打开命令行,并进入程序文件保存的目录中。
- 输入命令 go run hello.go 并按回车执行代码。
- 如果操作正确你将在屏幕上看到 "Hello World!" 字样的输出。
- 我们还可以使用 go build 命令来生成二进制文件:
package main import "fmt" func main()
{ // 错误,{ 不能在单独的行上
fmt.Println("Hello, World!")
}
Go 语言基础语法
fmt.Println("Hello, World!")
fmt.Println("yp:runoob.com")
- 1ab(以数字开头)
- case(Go 语言的关键字)
- a+b(运算符是不允许的)
package main
import "fmt"
func main() {
fmt.Println("Google" + "Runoob")
}
|
break
|
default
|
func
|
interface
|
select
|
|
case
|
defer
|
go
|
map
|
struct
|
|
chan
|
else
|
goto
|
package
|
switch
|
|
const
|
fallthrough
|
if
|
range
|
type
|
|
continue
|
for
|
import
|
return
|
var
|
|
append
|
bool
|
byte
|
cap
|
close
|
complex
|
complex64
|
complex128
|
uint16
|
|
copy
|
false
|
float32
|
float64
|
imag
|
int
|
int8
|
int16
|
uint32
|
|
int32
|
int64
|
iota
|
len
|
make
|
new
|
nil
|
panic
|
uint64
|
|
print
|
println
|
real
|
recover
|
string
|
true
|
uint
|
uint8
|
uintptr
|
var age int;
fruit=apples+oranges;
fruit = apples + oranges;
package main import (
"fmt"
) func main() {
// %d 表示整型数字,%s 表示字符串
var stockcode=123
var enddate="2020-12-31"
var url="Code=%d&endDate=%s"
var target_url=fmt.Sprintf(url,stockcode,enddate)
fmt.Println(target_url)
}
Go 语言数据类型
|
序号
|
类型和描述
|
|
1
|
布尔型
布尔型的值只可以是常量 true 或者 false。一个简单的例子:var b bool = true。
|
|
2
|
数字类型
整型 int 和浮点型 float32、float64,Go 语言支持整型和浮点型数字,并且支持复数,其中位的运算采用补码。
|
|
3
|
字符串类型:
字符串就是一串固定长度的字符连接起来的字符序列。Go 的字符串是由单个字节连接起来的。Go 语言的字符串的字节使用 UTF-8 编码标识 Unicode 文本。
|
|
4
|
派生类型:
包括:
(a) 指针类型(Pointer)
(b) 数组类型
(c) 结构化类型(struct)
(d) Channel 类型
(e) 函数类型
(f) 切片类型
(g) 接口类型(interface)
(h) Map 类型
|
|
序号
|
类型和描述
|
|
1
|
uint8
无符号 8 位整型 (0 到 255)
|
|
2
|
uint16
无符号 16 位整型 (0 到 65535)
|
|
3
|
uint32
无符号 32 位整型 (0 到 4294967295)
|
|
4
|
uint64
无符号 64 位整型 (0 到 18446744073709551615)
|
|
5
|
int8
有符号 8 位整型 (-128 到 127)
|
|
6
|
int16
有符号 16 位整型 (-32768 到 32767)
|
|
7
|
int32
有符号 32 位整型 (-2147483648 到 2147483647)
|
|
8
|
int64
有符号 64 位整型 (-9223372036854775808 到 9223372036854775807)
|
|
序号
|
类型和描述
|
|
1
|
float32
IEEE-754 32位浮点型数
|
|
2
|
float64
IEEE-754 64位浮点型数
|
|
3
|
complex64
32 位实数和虚数
|
|
4
|
complex128
64 位实数和虚数
|
|
序号
|
类型和描述
|
|
1
|
byte
类似 uint8
|
|
2
|
rune
类似 int32
|
|
3
|
uint
32 或 64 位
|
|
4
|
int
与 uint 一样大小
|
|
5
|
uintptr
无符号整型,用于存放一个指针
|
Go 语言变量
package main
import "fmt"
func main() {
var a string = "Runoob"
fmt.Println(a) var b, c int = 1, 2
fmt.Println(b, c)
}
package main
import "fmt"
func main() { // 声明一个变量并初始化
var a = "RUNOOB"
fmt.Println(a) // 没有初始化就为零值
var b int
fmt.Println(b) // bool 零值为 false
var c bool
fmt.Println(c)
}
- 数值类型(包括complex64/128)为 0
- 布尔类型为 false
- 字符串为 ""(空字符串)
- 以下几种类型为 nil:
package main
import "fmt"
func main() {
var i int
var f float64
var b bool
var s string
fmt.Printf("%v %v %v %q\n", i, f, b, s)
}
package main
import "fmt"
func main() {
var d = true
fmt.Println(d)
}
package main
import "fmt"
func main() {
f := "Runoob" // var f string = "Runoob" fmt.Println(f)
}
package main var x, y int
var ( // 这种因式分解关键字的写法一般用于声明全局变量
a int
b bool
) var c, d int = 1, 2
var e, f = 123, "hello"
func main(){
g, h := 123, "hello"
println(x, y, a, b, c, d, e, f, g, h)
}
package main
import "fmt"
func main() {
var a string = "abc"
fmt.Println("hello, world")
}
GO语言基础(结构+语法+类型+变量)的更多相关文章
- Swift语言指南(一)--语言基础之常量和变量
原文:Swift语言指南(一)--语言基础之常量和变量 Swift 是开发 iOS 及 OS X 应用的一门新编程语言,然而,它的开发体验与 C 或 Objective-C 有很多相似之处. Swif ...
- GO语言的基本语法之变量,常量,条件语句,循环语句
GO语言的基本语法之变量,常量,条件语句,循环语句 作为慕课网得笔记自己看 定义变量: 使用var关键字 var a, b, C bool var s1, s2 string = "hell ...
- C#语言基础——结构体和枚举类型
结构体和枚举类型 一.结构体(struct) 结构类型是用户自己定义的一种类型,它是由其他类型组合而成的,可包含构造函数.常数.字段.方法.属性.索引器.运算符.事件和嵌套类型的值类型.结构在几个重要 ...
- C语言基础(6)-char类型
1. char常量.变量 使用单引号‘’引起来的就是char的常量 ‘a’是一个char类型的常量 “a”是一个字符串类型的常量 1是一个int型的常量 ‘1’是一个char型的常量 char a; ...
- C语言基础:两个变量交换值的方法
学习任何语言基础时,两个数值得交换是必须掌握的,下面是3种不同的方式(c语言) 方法一:利用数学的计算技巧 #include <stdio.h> int main() { , b = ; ...
- python基础入门语法和变量类型(二)
列表 列表是 Python 中使用最频繁的数据类型,它可以完成大多数集合类的数据结构实现,可以包含不同类型的元素,包括数字.字符串,甚至列表(也就是所谓的嵌套). 和字符串一样,可以通过索引值或者切片 ...
- C语言基础--结构体对齐,位域,联合体
结构体对齐 1--结构体对齐的原因与意义 许多计算机系统对基本数据类型的可允许地址做出了一些限制,要求某种类型的对象的地址必须是某个值K(通常是2,4,8)的倍数,而这个k则被称为该数据类型的对齐模数 ...
- C语言基础学习基本数据类型-变量和常量
变量和常量 什么是变量和常量?有些数据在程序运行前就预先设定,并在运行过程中不发生变化,称之为常量:有些数据在程序运行中可能发生变化或被赋值,称之为变量. 使用变量前必须先声明一个变量.变量定义的语法 ...
- go语言基础之复合类型
1.分类 类型 名称 长度 默认值 说明 pointer 指针 nil array 数组 0 slice 切片 nil 引⽤类型 map 字典 nil 引⽤类型 struct 结构体 2.指针 指针是 ...
随机推荐
- hr虚线
转载请注明来源:https://www.cnblogs.com/hookjc/ <hr size="1" noshade="noshade" style= ...
- 使用python实现冒泡排序和快速排序
1 def bubble(arr): 2 """冒泡排序""" 3 loop = len(arr) - 1 4 if loop > 0 ...
- Sping高质量博文链接集合
1. Spring事务传播行为详解 https://segmentfault.com/a/1190000013341344
- [杭电新生赛]hgame-week1-web-wp
hgame第一周总结 (官方wp更加简洁明了.直入主题,个人比较菜,所以过程繁琐 写好了一直没发qwq(就是懒(bushi) 一.Tetris plus! 题目里说玩到3000分就给flag,还真有点 ...
- 从零开始学mitmproxy抓包工具
Man In The Middle mitm是Man In The Middle的首字母缩写,意思是位于中间的人,表明mitmproxy是一个代理,可以拦截请求,实现网络抓包.知名的网络抓包工具有Fi ...
- Solution -「JSOI 2019」「洛谷 P5334」节日庆典
\(\mathscr{Description}\) Link. 给定字符串 \(S\),求 \(S\) 的每个前缀的最小表示法起始下标(若有多个,取最小的). \(|S|\le3\time ...
- Solution -「AGC 002F」「AT 2000」Leftmost Ball
\(\mathcal{Description}\) Link. 给你 \(n\) 种颜色的球,每个球有 \(k\) 个,把这 \(n\times k\) 个球排成一排,把每一种颜色的最左边出现 ...
- python 百宝箱
百宝箱 1. 正则表达式 删除缓存文件 os.system("/sbin/fuser -k .nfs*") os.system("rm -rf .nfs*") ...
- Redis 源码简洁剖析 15 - AOF
AOF 是什么 AOF 持久化的实现 命令追加 AOF 文件的写入和同步 AOF 文件的载入和数据还原 AOF 重写 为什么需要重写 什么是重写 如何重写 AOF 后台重写 为什么需要后台重写 带来的 ...
- Spring5基础
基于Spring 5.2.6 版本. Spring概念 IOC容器 IOC底层原理的演进过程--本质就是为了高内聚,低耦合 在原始方式中,我们通过new创建对象来实现创建对象的逻辑,但是这样做当对象路 ...