基本变量类型

介绍几种基本的变量类型:字符串、int、float、bool

package main

import (
"fmt"
) // 列举几种非常基本的数据类型
func main() {
fmt.Println("go" + "lang") // 允许使用“+”来连接字符串
fmt.Println("1+1=", 1+1)
fmt.Println("7.0/3.0=", 7.0/3.0)
fmt.Println(true && false) // 需要注意的是,go中不允许将整形强制转换成布尔型
fmt.Println(true || false)
fmt.Println(!true)
}

字符串

  1. 可以使用反引号来定义多行字符串

    var (
    str string = `aaa
    aaa
    aaa
    aaa
    aaa `
    ) stdOut:
    aaa
    aaa
    aaa
    aaa
    aaa

定义变量

package main

import "fmt"

func main() {

	var a = "initial"    // 使用关键字var来定义变量,可以不显示指定变量类型,go会自动判断
fmt.Println(a) var b, c int = 1, 2 // 指定变量类型时,类型要放在变量名的后面
fmt.Println(b, c) var d = true
fmt.Println(d) var e int // int的默认值为0
fmt.Println(e) f := "apple" // 可以使用“:=”来省略关键字var,这种方式一般用的比较多,这里也不用显示的指定变量类型
fmt.Println(f)
}

要点总结

  1. go是一门强类型的语言,但是定义变量的时候却可以省略变量类型,由go自己推导出来

  2. 定义变量的几种方式

    var =

    var =

    :=

  3. 在go语言中,通常是使用var关键字来定义全局变量,使用":="来定义局部变量

数组

数组是一种数据类型的固定长度序列

package main

import "fmt"

func main() {

    var a [5]int    // 这里初始化了一个变量,发现默认值是数组中变量类型的默认值
fmt.Println("emp:", a) a[4] = 100 // 可以通过索引对数组中的指定元素赋值
fmt.Println("set:", a)
fmt.Println("get:", a[4]) fmt.Println("len:", len(a)) b := [5]int{1, 2, 3, 4, 5} // 初始化数组的同时赋值
fmt.Println("dcl:", b) var twoD [2][3]int // 定义多维数组
for i := 0; i < 2; i++ {
for j := 0; j < 3; j++ {
twoD[i][j] = i + j
}
}
fmt.Println("2d: ", twoD)
} stdOut:
emp: [0 0 0 0 0]
set: [0 0 0 0 100]
get: 100
len: 5
dcl: [1 2 3 4 5]
2d: [[0 1 2] [1 2 3]]

要点总结

  1. 数组中元素的默认值为元素类型的默认值
  2. 数组中的元素类型要一致
  3. 可以通过索引对数组指定元素进行操作
  4. 可以定义多维数组
  5. var [n] = [n]{1,2,3,4.....}

切片

切片类似于数组,但其长度可变

package main

import "fmt"

func main() {

    s := make([]string, 3)    // 定义了一个长度为3的切片
fmt.Println("emp:", s) // 这里打印一下发现其中的值为空的,如果是数组的话会是3个0 s[0] = "a"
s[1] = "b"
s[2] = "c"
fmt.Println("set:", s)
fmt.Println("get:", s[2]) fmt.Println("len:", len(s)) // 使用起来也和数组一样,可以通过索引使用 s = append(s, "d") // 通过append函数来拓展切片,但要注意这里需要重新赋值,否则原来的是不会变得
s = append(s, "e", "f") // 可以一次拓展多个值
fmt.Println("apd:", s) c := make([]string, len(s))
copy(c, s) // 使用copy可以复制切片
fmt.Println("cpy:", c) l := s[2:5] // 类似python,通过 “:” 来限制索引
fmt.Println("sl1:", l) l = s[:5]
fmt.Println("sl2:", l) l = s[2:]
fmt.Println("sl3:", l) t := []string{"g", "h", "i"} // 定义的同时初始化
fmt.Println("dcl:", t) twoD := make([][]int, 3) // 二维切片
for i := 0; i < 3; i++ {
innerLen := i + 1
twoD[i] = make([]int, innerLen)
for j := 0; j < innerLen; j++ {
twoD[i][j] = i + j
}
}
fmt.Println("2d: ", twoD)
} stdOut:
emp: [ ]
set: [a b c]
get: c
len: 3
apd: [a b c d e f]
cpy: [a b c d e f]
sl1: [c d e]
sl2: [a b c d e]
sl3: [c d e f]
dcl: [g h i]
2d: [[0] [1 2] [2 3 4]]

常用方法

  1. 长度 len()

    使用len(切片名) 来得到切片长度

  2. append()和copy()

    append(numbers, 1) // 将1添加到numbers的末尾

    copy(numbers1, numbers2) //将numbers2复制到numbers1

2.go语言入门----变量类型、声明变量、数组、切片的更多相关文章

  1. js声明引入和变量声明和变量类型、变量

    问题: 在网页的发展历程中,发现网页不能对用户的数据进行自动校验,和提供一些特效. 解决: 使用javascript. 作用 可以让网页和用户进行直接简单的交互. 可以让网页制作特效和动画. 声明js ...

  2. Go使用变量类型声明和方法的注意事项

    当我们通过把一个现有(非interface)的类型定义为一个新的类型时,新的类型不会继承现有类型的方法. 神马意思?来一段简短错误的代码: package main import "sync ...

  3. 【C语言】复杂类型声明

    原文地址: http://blog.csdn.net/wangweixaut061/article/details/6549768 原文不让转载,但实在是有用,就拷贝了一小部分过来.全文请点开链接. ...

  4. C语言随笔_类型声明

    有位同学说,“老师,我运行如下代码,结果报错了” #include <iostream.h>   int main(){ char c,  int b; return 0; } 报错结果是 ...

  5. Python 变量类型及变量赋值

    在 Python 中,变量不一定占用内存变量.变量就像是对某一处内存的引用,可以通过变量访问到其所指向的内存中的值,并且可以让变量指向其他的内存.在 Python 中,变量不需要声明,但是使用变量之前 ...

  6. MySQL服务 - MySQL变量类型及变量设置

    一.MySQL变量类型: MySQL通过变量来定义当前服务器的特性,保存状态信息等.我们可以通过手动更改变量的值来配置MySQL,也可以通过变量获得MySQL的当前状态信息.MySQL的变量类型可以从 ...

  7. js基础知识--变量类型和变量计算

    提问: JS中使用typeof能得到的哪些类型 何时使用===何时使用== JS中有哪些内置函数 JS变量按照存储方式区分为哪些类型,并描述其特点 如何理解JSON 涉及知识点:(1)变量类型 值类型 ...

  8. Go语言学习之4 递归&闭包&数组切片&map&锁

    主要内容: 1. 内置函数.递归函数.闭包2. 数组与切片3. map数据结构4. package介绍 5. 排序相关 1. 内置函数.递归函数.闭包 1)内置函数 (1). close:主要用来关闭 ...

  9. C语言入门-结构类型

    一.声明结构类型 #include <stdio.h> int main(int argc, char const *argv[]) { // 声明结构类型 struct date { i ...

  10. Python变量类型及变量

    python是解释性语言 什么是解释性语言 就相当于你去饭店,你点了10道菜,他做好1道给你上1道.解释一行,执行一行.速度上不如编译性语言快. 什么是编译性语言 就相当于去饭店吃饭,你点了10道菜, ...

随机推荐

  1. Flink-v1.12官方网站翻译-P016-Flink DataStream API Programming Guide

    Flink DataStream API编程指南 Flink中的DataStream程序是对数据流实现转换的常规程序(如过滤.更新状态.定义窗口.聚合).数据流最初是由各种来源(如消息队列.套接字流. ...

  2. 全网最硬核 JVM TLAB 分析(单篇版不包含额外加菜)

    今天,又是干货满满的一天.这是全网最硬核 JVM 系列的开篇,首先从 TLAB 开始.由于文章很长,每个人阅读习惯不同,所以特此拆成单篇版和多篇版 全网最硬核 JVM TLAB 分析(单篇版不包含额外 ...

  3. Jenkins(8)构建触发器之定时构建和轮询 SCM

    前言 跑自动化用例每次用手工点击jenkins出发自动化用例太麻烦了,我们希望能每天固定时间跑,这样就不用管了,坐等收测试报告结果就行. jenkins的定时任务是用的crontab语法 定时构建语法 ...

  4. CF600 div2 F.Cheap Robot(思维+最短路+最小瓶颈路)

    最开始啃这题的时候我还是个不会$lca$的人,看代码看的没有一点头绪,现在趁着寒假补了很多关于图论的知识点,回头在看这题还是有很多值得学习的地方. Solution 1 (offline): 原题解: ...

  5. [The Preliminary Contest for ICPC Asia Nanjing 2019] L-Digit sum

    题意 $S_{b}(n)$表示数字$n$在$b$进制下各位的和,对于给定的数$N$和$b$,求出$\sum_{n=1}^{N}S_{b}(n)$ $[ link ]$ 分析 题解上写的是签到题,这是个 ...

  6. 【noi 2.6_8464】股票买卖(DP)

    题意:N天可买卖2次股票,问最大利润. 解法:f[i]表示前 i 天买卖一次的最大利润,g[i]表示后 i 天. 注意--当天可以又买又卖,不要漏了这个要求:数据较大. 1 #include<c ...

  7. hdu4339 Query

    Problem Description You are given two strings s1[0..l1], s2[0..l2] and Q - number of queries. Your t ...

  8. win7 & centos7 双系统安装方法

    1.准备 1)Centos7镜像 官方:https://www.centos.org/ 阿里镜像:http://mirrors.aliyun.com/centos/ 2)安装windows7系统的电脑 ...

  9. 国产网络测试仪MiniSMB - 如何3秒内创建出16,000条IP递增流

    国产网络测试仪MiniSMB(www.minismb.com)是复刻smartbits的IP网络性能测试工具,是一款专门用于测试智能路由器,网络交换机的性能和稳定性的软硬件相结合的工具.可以通过此以太 ...

  10. 在 Spring Boot 2 中致敬 JSP

    新冠病毒