基本变量类型

介绍几种基本的变量类型:字符串、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. Spring cloud-Bus (消息总线)

    <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring ...

  2. Java 复习整理day10

    package com.it.demo01_quickstart; /* 案例: 讲解网络编程相关概念. 网络编程简介: 概述: 网络编程也叫: 套接字编程, Socket编程, 就是用来实现 网络互 ...

  3. dedecms不能保存jpeg格式图片的解决方法

    方法如下: 进入织梦的后台管理目录,默认是dede文件夹,找到/inc/inc_archives_functions.php文件. 在文件里查找gif|jpg|,我找到了4个, 在它们后面加jpeg的 ...

  4. BZOJ1150 [CTSC2007]数据备份Backup 链表+小根堆

    BZOJ1150 [CTSC2007]数据备份Backup 题意: 给定一个长度为\(n\)的数组,要求选\(k\)个数且两两不相邻,问最小值是多少 题解: 做一个小根堆,把所有值放进去,当选择一个值 ...

  5. Java——方法及构造方法、intellij IDEA中的一些快捷键

    intellij IDEA中的一些快捷键: 一.方法基础 给你一个两个int类型的数相加的例子: 这个例子说明了 public static void main(String[] args) {}相当 ...

  6. EFCore学习记录--数据访问技术人门

    1.安装Microsoft.EntityFrameworkCore.Sqlite.Microsoft.EntityFrameworkCore.Tools包2.创建模型 数据库上下文模型:Bloggin ...

  7. 使用cfssl生成自签证书

    安装ssl wget https://pkg.cfssl.org/R1.2/cfssl_linux-amd64 wget https://pkg.cfssl.org/R1.2/cfssljson_li ...

  8. Dcoker命令使用详解

    Docker语法说明 docker [OPTIONS] COMMAND [arg...] OPTIONS --config=~/.docker :指定本地客户端配置文件. -D, --debug :开 ...

  9. 涂颜色的RPG问题

    长度为n的方格,刷3种颜色的颜料,相邻的方格颜料颜色不能相同,且首尾方格颜色不能相同.每个方格必须涂色.计算一共有多少种涂色方式. 解题思路:(1)f(1)=3,f(2)=6,f(3)=6 (2)如果 ...

  10. cs实时系统之网关设计

    今天给大家讲一下client-server系统(cs)设计,基本结构 1.client 客户端,插件式开发,负责对应ui的展示 2.gateway 网关层,管理客户端通信连接,负载后端集群服务 3.s ...