golang程序的基本结构和基本数据类型

1.文件名,关键字和标识符
  1. 每个golang程序的源文件都是以.go为后缀结尾
  2. golang有25个关键字
    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
  3. 标识符使用字母数字下划线,且必须以字母或下划线开头的字符串序列
    另外golang中还预定义了35个标识符
    append, bool, byte, cap, close, complex, complex64, complex12
    copy, false, float32, float64, imag, int, int8, int16, int32, int64, iota
    len, make, new, nil, panic, print, println, real, recover, string, true
    unit, unit8

2.一个最小的golang程序结构
    package main
    
    import "fmt"
    
    func main() {
        fmt.Println("hello golang!")
    }
  1. package main申明了这个文件是属于main这个主包
  2. import "fmt"导入fmt包
  3. func main() {
    // 函数体
    }
    申明了主函数main

3.常量及其定义和使用
  1. 概念:常量是在整个程序的生命周期中其值不发生变化的一直量
  2. 常量的声明:声明一个常量使用关键字const定义紧接着是常量的名字
  3. 定义格式如下
    const identifer [type] = value
    const PI = 3.14
  4. Note:[type]用来说明常量的类型,例如
    const PI float64 = 3.14
    const STL string = "strings"

4.变量及其声明
  1. 概念:在程序运行过程中会发生变化的量
  2. 变量的一般声明:声明一个变量使用var关键字紧接着是变量的名字
  3. 一般的定义格式如下
    var variable_name [type]
    var condition string = "if a is not b"

5.类型零值
  1. 概念:如果声明了一个变量并且没对这个变量进行初始化赋值,golang会对该变量的类型赋予相应的类型零值,例如
    var b string // 零值为("")空字符串
    var c int // 零值为0
    ...

6.简短形式声明并初始化变量
  1. 使用简短声明变量时,变量的类型是有系统进行推断的,例如
    a := false
    str := "string"
    Note:(_)空白字符用于抛弃值,例如a, _, c = 1, 2, 3,数字2会被抛弃

7.init函数
  1. 概念:init函数是一个在每个包完成初始化后自动执行,并且执行优先级比main函数高
    func init() {//statement}

8.基本数据类型和运算符
  1. 布尔类型:布尔类型的的值只能是true或者false,两个类型相同的值可以使用==或者!=运算符来进行比较并获得一个布尔值,例如
    var vari = 10
    vari == 10
    vari == 5
    vari != 5

9.逻辑运算符

!, &&, ||


10.算术运算符

+,-,*,/,%


11.运算符优先级
    优先级            运算符
        7             ^, !
        6             *, /, %, <<, >>, &, &^
        5             +, -, |, ^
        4             ==, !=, <, <=, >=, >
        3             <-
        2             &&
        1             ||

12.字符串
  1. 概念:字符串是utf-8字符的一个序列

13.strings包
  1. 判断字符串的前缀和后缀
    HasPrefix(s, prefix) bool判断字符串s是否是以prefix开头
    HasSuffix(s, suffix) bool判断字符串s是否是以suffix结尾
    package main

    import (
        "ftm"
        "strings"
    )
    func main() {
        var str string = "https://www.golang.org"
        fmt.Println(strings.HasPrefix(str, "https:"))
        fmt.Println(strings.HasSuffix(str, ".org"))
    }

14.字符串包含
  1. Contains(s, substr, string) bool判断字符串s是否包含substr
    package main

    import (
        "fmt"
        "strings"
    )

    func main() {
        var str string = "hello golang"
        fmt.Println(strings.Contains(str, "he"))
    }

15.索引
  1. Index(s, substr string) int判断子字符串后字符在父字符串中出现的位置
  2. LastIndex(s, substr string) int返回字符串substr在字符串s中最后出现位置的索引
  3. 如果字符串ch是非ascii编码的字符,建议使用IndexRune函数来对字符进行定位IndexRune(s, substr string) int
    package main
    
    import (
        "fmt"
        "strings"
    )

    func main() {
        var str string = "oh my god!"
        fmt.Println(strings.Index(str, "o"))
        fmt.Println(strings.LastIndex(str, "my"))
        fmt.Println(strings.IndexRune(str, "层次"))
    }

16.字符串替换和统计字符串出现的次数
  1. Replace(str, old, new, n) stringn为-1时则替换所有字符串old为字符串new
  2. Count(s, str string) int统计str在s字符串中出现的次数

17.字符串重复
  1. Repeat(s string, count int) string将字符串s重复count次,最后返回一个新的字符串

18.修剪字符串
  1. TrimSpace(s)剔除前后空白字符
  2. TrimLeft(s)剔除左边的某个字符
  3. TrimRight(s)剔除右边的某个字符

19.分割字符串
  1. Split(s, sep)指定字符进行分割

20.拼接slice到字符串
  1. Join(sl []string, sep string)将类型为string的slice使用分隔符来拼接组成一个字符串

that's all

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