一、输出hello,world程序

package main;

import "fmt";

func main() {
fmt.Printf("hello,world");
}

二、定义变量

package main;

import "fmt";

func main() {
//定义一个类型为int的变量a
var a int; //定义多个类型为int的变量
var b, c, d int; //定义并初始化
var e int = 0; //定义多个变量并初始化
var f, g, h int = 1, 2, 3; //上面简化写法,根据值的类型初始化
var i, j, k = 4, 5, 6; //更简洁的写法
//但这种方式只能在函数内部使用
//:=这种操作是先声明再初始化两步操作,你对一个变量两次:=操作会报错
l := 7; //特殊的变量名_,任何赋予它的值都会被丢弃
_, m := 8, 9; fmt.Printf("%d %d %d %d %d %d %d %d %d %d %d %d %d", a, b, c, d, e, f, g, h, i, j, k, l, m);
}

三、定义常量

package main;

import "fmt";

func main() {
//常量可定义为数值、布尔值或字符串
const CNT = 1000;
const PI = 3.14;
const PRE = "db_"; fmt.Printf("%d %f %s", CNT, PI, PRE);
}

四、go的基础类型

package main;

import (
"fmt"
"errors"
) func main() {
//bool类型
var isRun = false;
//数值类型 //有符号整型
var a int8 = 1;
var b int16 = 2;
var c int32 = 3;
//无符号整型
var d uint8 = 4;
var e uint16 = 5;
var f uint32 = 6;
//rune是int32的别称,byte是uint8的别称
var g rune = 7;
var h byte = 8;
//不同类型的变量之间不允许互相赋值或操作
//下面是错误的
//tmp := a + b; //浮点数
var i float32 = 1.23;
var j float64 = 2.45; //复数
var k complex64 = 5+5i;
var l complex128 = 3+3i; //字符串
var str1 string = "hello";
//go中字符串是否可改变的,下面是错误的
//str1[0] = 'w'; //如果要改变字符串,需要先转成[]byte类型,修改后再转string
tmp := []byte(str1);
tmp[0] = 'w';
str1 = string(tmp); //通过+进行字符串连接
str2 := "hello";
str3 := str2 + ",go"; //错误类型
err := errors.New("我是个错误");
if err != nil {
fmt.Print(err);
} fmt.Printf("%t\n", isRun);
fmt.Printf("%d %d %d %d %d %d %d %d\n", a, b, c, d, e, f, g, h);
fmt.Printf("%f %f\n", i, j);
fmt.Printf("%v %v\n", k, l);
fmt.Printf("%s\n", str1);
fmt.Printf("%s\n", str3);
}

五、分组声明

package main;

import (
"fmt"
); func main() {
//分组定义类型
type {
F64 float64;
STR string;
};
//分组定义常量
const (
PI = 3.14;
CNT = 1000;
PRE = "db_";
);
//分组声明变量
var (
i int;
pi float32;
pre string;
);
//iota枚举
const (
a = iota;
b = iota;
c = iota;
);
//每遇到一个const关键字,iota就会重置
const d = iota; fmt.Printf("%d %d %d %d", a, b, c, d);
}

六、array、slice、map

package main;

import (
"fmt"
); func main() {
//声明数组,5表示数组长度,int表示存储的元素类型
var arr [5]int;
//下标从0开始
arr[0] = 5;
arr[1] = 6; //长度也是数组类型的一部分,[4]int与[5]int是不同类型
//数组不能改变长度,数组之间的赋值是值的赋值,而不是指针 //声明并初始化
a := [3]int{1, 2, 3};
b := [5]int{4, 5, 6};
//会自动计算长度
c := [...]int{7, 8, 9};
//多维数组,二行二列
d := [2][2]int{[2]int{1, 2}, [2]int{3, 4}};
e := [2][2]int{{1, 2}, {3, 4}}; //slice并不是真正意义上的动态数组,而是一个引用类型
//slice总是指向一个底层array
//slice的声明类似array,只是不需要长度
var f []int;
g := []byte{'a', 'b', 'c'};
//slice可以从一个数组或一个已经存在的slice中再次声明
var h []byte = g[1:3]; //数组和slice声明的不同
//声明数组时,方括号内写明了数组的长度或使用...自动计算长度
//声明slice时,方括号内没有任何字符 var i = [6]int{1, 2, 3, 4, 5, 6};
//声明初始化两个slice
var j []int = i[2:5];
var k []int = i[1:6];
//slice是引用类型,改变j中的内容,i和k的内容也会变
j[0] = 9; //map类型的声明,key是字符串,值是int
//这种方式会创建一个nil map,所以在使用时必须用make初始化。
var m map[string]int;
m = make(map[string]int); //另一种声明方式
n := make(map[string]int); //声明并初始化
l := map[string]int {"age":30, "height":192} m["age"] = 25;
m["height"] = 172; n["age"] = 25;
n["height"] = 186; //map是无序的,长度不固定,引用类型
//判断key是否存在
//map有两个返回值,第二值表示key是否存在
val, exist := m["height"];
if exist {
fmt.Print(val);
} fmt.Printf("%v\n%v\n%v\n%v\n%v\n", a, b, c, d, e);
fmt.Printf("%v\n%v\n%v\n", f, g, h);
fmt.Printf("%v\n%v\n%v\n", i, j, k);
fmt.Printf("%v\n%v\n%v\n", m, n, l);
}

七、make、new操作

make用于内建类型(map、slice和channel)的内存分配。new用于各种类型的内存分配。

new返回指针
make返回初始化后的(非零)值,不是指针。

golang基础学习的更多相关文章

  1. golang基础学习及web框架

    golang的web框架 web框架百花齐放:对比 Go Web 编程 Go Web Examples Golang 适合做 Web 开发吗? beego beego简介 go-restful gol ...

  2. golang基础学习---log

    package main import ( "log" ) func init() { log.SetPrefix("TRACE: ") log.SetFlag ...

  3. golang基础学习-MongoDB使用

    1.系统环境 Golang:go version go1.10.3 darwin/amd64 OS:MacOS MongoDB: version: 3.4.4 2.Golang使用MongoDB 使用 ...

  4. Golang基础学习总结

    转自:http://blog.csdn.net/yue7603835/article/details/44264925 1.不支持继承.重载 ,比如C++.Java的接口,接口的修改会影响整个实现改接 ...

  5. Golang 基础学习笔记(2)| 如何安装Go工具

    可参考官网:http://docscn.studygolang.com/doc/install#安装 1.OS要求 gc 编译器支持以下操作系统及架构.在开始前,请确保你的系统满足这些需求. 若你的O ...

  6. golang基础学习-strings包常用函数学习

    package main import ( "fmt" "strings" ) //StrFunc 字符串说明 func main() { var testSt ...

  7. Golang 汇编asm语言基础学习

    Golang 汇编asm语言基础学习 一.CPU 基础知识 cpu 内部结构 cpu 内部主要是由寄存器.控制器.运算器和时钟四个部分组成. 寄存器:用来暂时存放指令.数据等对象.它是一个更快的内存. ...

  8. GoLang基础数据类型--->字符串处理大全

    GoLang基础数据类型--->字符串处理大全 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 欢迎加入:   高级运维工程师之路               59843264 ...

  9. go语言基础学习

    go基础学习,面向对象-方法在Go语言中,可以给任意自定义类型(包括内置类型,但不包括指针类型)添加相应的方法 使用= 和:=的区别: // = 使用必须使用先var声明例如: var a a=100 ...

随机推荐

  1. RabbitMQ系列教程之一:我们从最简单的事情开始!Hello World(转载)

    RabbitMQ系列教程之一:我们从最简单的事情开始!Hello World 一.简介 RabbitMQ是一个消息的代理器,用于接收和发送消息,你可以这样想,他就是一个邮局,当您把需要寄送的邮件投递到 ...

  2. sqlalchemy 学习--单表操作

    以下所有代码片段都使用了统一的引用,该引用如下: from sqlalchemy import create_engine, ForeignKey from sqlalchemy.ext.declar ...

  3. 通过DOS命令批量重命名文件

    以下为提供的两种方法:遍历当前目录下的所有文件名以.avi结尾的文件,然后权限规则进行修改(规则含义请自行查找资料).第一种方法有缺陷,更改完所有的文件名后,会多改一次.请斟酌使用.第二种方法解决了第 ...

  4. iOS中的MVC

      我们今天谈谈cocoa程序设计中的 模型-视图-控制器(MVC)范型.我们将从两大方面来讨论MVC: 什么是MVC? M.V.C之间的交流方式是什么样子的? 理解了MVC的概念,对cocoa程序开 ...

  5. iOS 两个页面之间的跳转

    -------->-------->-------->-------->-------->-------->-------->   以上完成页面one跳到页面 ...

  6. 移动端调起qq聊天

    <div class="item item-right" style='width:3rem;padding-left:0rem;'>QQ:<a target=& ...

  7. eclipse老运行上一个程序之原因总结

    运行eclipse有的时候不运行刚写的类,老是运行别的以前的类,删除了以前的类就啥都不运行.找了好久的原因,最后发现,刚写的类没有main()或者有误.这和java的特点有关,程序的运行总是main( ...

  8. Ubuntu下面的docker开启ssh服务

    选择主流的openssh-server作为服务端: root@161f67ccad50:/# apt-get install openssh-server -y Reading package lis ...

  9. springboot-day01-引入基础

    1. 今日大纲 1. 了解Spring的发展 2. 掌握Spring的java配置方式 3. 学习Spring Boot 4. 使用Spring Boot完成CRUD 2. Spring的发展 2.1 ...

  10. Java中String的常用方法总结

    Java中String的常用方法总结 1.length()字符串的长度 String str="HelloWord"; System.out.println(str.length( ...