golang学习总结

学习golang注意点:

  1. 导的包必须使用;或者使用_未使用的包,作用是调用该包下的初始化方法。
  2. 局部变量声明必须使用。
  3. go语言的包和java的相似,包名.变量访问

1. 初识go语言

1.1 Hello World

package main

import "fmt"

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

1.2 go 数据类型

布尔:

var a bool = true
var b bool = false

整型:

整型分为有符号和无符号的类型

8, 16 ,32 分别代表位数

int: 根据系统决定是32位还64位

int8: 1个字节,-128~127 相当于java中的short;

int16: 2个字节,-215 ~ 215 -1

int32: 4个字节 -231 ~231 - 1

int64: 8个字节-263 ~263 - 1

uint : .....

无符号整形都是取值0~216 - 1

var a int = -3
var b uint = 3 //uint类型不可以为负数

浮点型:

var a float32 = 100.0
var b float64 = 100.00 //默认

字符类型

golang中的字符使用的是字节保存的,本质就是一个int32类型

var a byte = 'a'
var b byte = 'c'
fmt.Print(a, "===", b)  //输出的是该字节对应的字节码: 97===99
fmt.Printf("%c === %c", a, b) // a === c

字符串型:

var str string = "hello world"
//多行字符串,不需要使用+来连接多行
var str2 string = `a
        asda asdasdadsadasd `

复数类型:

complex64 是两个float32组成 complex128两个float64组成

var a complex64 = 10 + 3i
var b complex128= 10 + 3i //默认

相关操作

var v= complex(2 , 3) //构造1个复数,
a := real(v) //返回复数实部 2
b := image(v) 返回复数虚部 3

rune类型:

// rune is an alias for int32 and is equivalent to int32 in all ways. It is
// used, by convention, to distinguish character values from integer values.

//int32的别名,几乎在所有方面等同于int32
//它用来区分字符值和整数值
type rune = int32

1.3 变量常量

局部变量:

属于函数或者方法;声明之后必须使用

var a = 3;
var b int = 3;
c := 3

全局变量

b := 10 这种全局变量声明是错误的

全局变量的概念:隶属于,声明之后可以不使用

var a int
var (
    c int
    d string
)
var e = 3

常量

局部

const a = 3

全局

const a int = 10
const b  = 20
const (
    d int = 10
    e string = "ss"
    f = 30
) 

1.5 字符串相关操作

golang中string底层是通过byte数组实现的,byte使用utf-8编码标识的Unicode文本,每个汉字占3个字节

  1. 求长度
func strDemo() {
    fmt.Println(len("hello")) //5
    fmt.Println(len("中")) //3
    fmt.Println(len([]rune("中"))) //1, 正确获取中文字符串长度
}
  1. 字符串遍历
//对中文无法支持
func strEach() {
    str := "hello world"
    for i := 0; i < len(str); i ++ {
        //fmt.Print(str[i] ,"\t") // 104    101 108 108 111 32  119 111 114 108 100
        //讲字节编码转为字符串输出
        fmt.Printf("%c\t", str[i]) //h  e   l   l   o       w   o   r   l   d
    }
}
func strEach() {
    str := "hello world 中国"
    for i, s := range str {
         //0    h1  e2  l3  l4  o5   6  w7  o8  r9  l10 d11  12 中15 国
        fmt.Print(i, "\t", string(s))
    }
}

//这个可以正确的输出索引
func strEachRune() {
    str := "中国人民"
    for i, s := range []rune(str) {
        fmt.Println(i, string(s))
    }
}
  1. 其他操作
str := "中国人民, hello world"
index := strings.Index(str, "国") //存在则 index > -1, 否则 == -1   此时index=-3
split := strings.Split(str, ",")
replace := strings.Replace(str, "o", "2", 1) //第三个参数标识替换几个,小于0,则替换所有
result := strings.EqualFold("中国", "中国2") //不区分大小写
fmt.Println("中国" == "中国H") //区分大小写, 同strings.Compare()5

1.6 相互转换

原文地址:https://www.cnblogs.com/hu1056043921/p/10312072.html

时间: 2024-10-12 18:14:38

golang学习总结的相关文章

【golang学习】环境搭建

近期项目的需要开始了学习golang的旅程,在此将学习的过程做以记录,方便查看,也希望帮助到大家. 由于我使用的是64位linux环境(redhat 5.2),所以这里就介绍64位的安装方式,其他类似: 1. 下载安装包 自从2014年5月谷歌在国内被封杀之后,我们下载go安装包也得翻墙了,但是为了方便我上传了一个64位linux的包在(地址),你可以直接下载使用. 2.安装 下载完上传到你的linux系统中,比如/opt/go1.1.1.linux-amd64.tar.gz,这是就开始安装了,

Python 程序员的 Golang 学习指南(III): 入门篇

基础语法 类型和关键字 类型 // 基础类型 布尔类型: bool 整型: int8,uint8,int16,uint16,int32,uint32,int64,uint64,int,rune,byte,complex128, complex64,其中,byte 是 int8 的别名 浮点类型: float32 . float64 复数类型: complex64 . complex128 字符串: string 字符类型: rune(int32的别名) 错误类型: error // 复合类型 指

golang学习笔记————字符串

字符串的创建 在golang中 字符串是使用双引号("")包裹住的字符序列: 字符是使用单引号('')包裹住的单一字符: 声明字符串的方式:var strvalue string 声明并创建的方式:strvalue := "This is a string!"; KeyPoint: 一旦字符串变量被初始化后,则不可单独改变该字符串序列中的某一字符:但该字符串变量可以重新被赋值: Ex:   strvalue := "abcd" fmt.Print

golang学习笔记:golang 语法篇(二)

在语法篇(一)中学习了go中基本的数据类型.变量.常量等组成语言的基本要素,在这一节中将会学习如何将这些元素组织起来,最终写成可以执行的代码. 在这一部分包括: go中的流程控制语句: go中函数的用法: go特殊的错误处理方式: Golang中的流程控制语句 在具体编程的时候免不了需要使用一些特殊的语句实现某些功能,比如使用循环语句来进行迭代,使用选择语句控制程序的执行方式等.这些语句在任何一门程序设计语言 中都会有支持,golang中除了支持常用的循环,条件选择语句以外,还支持跳转语句,下面

golang学习之旅:搭建go语言开发环境

从今天起,将学习go语言.今天翻了一下许式伟前辈写的<Go语言编程>中的简要介绍:Go语言——云计算时代的C语言.前面的序中介绍了Go语言的很多特性,很强大,迫不及待地想要一探究竟,于是便问道Go语言.很幸运地发现了无闻大师已录制了一套针对新手的Go语言入门教程,深表感谢!教程在这儿. 官方网址是:https://golang.org/(呃,很无辜地被屏蔽了,办法看这里) 这是官网首页的介绍.The Go Programming Language Go is an open source pr

[golang学习] goroutine调度

这两天有些闲功夫, 学习下golang, 确实非常简洁. 不过有些缺憾. 在我的测试中. golang的调度(goroutine)似乎不是非常好. func say(k int) { fmt.Println(k) } func main() { runtime.GOMAXPROCS(2) for i := 0; i < 100; i++ { go say(i) } for { } } 这段测试代码是有bug的. 一开始我并没有设置 runtime.GOMAXPROCS(2) 则由于for循环导致

互联网世界中的C语言——我的golang学习笔记:1(基础语法快速过)

前言 学习任何知识都会有一个学习背景 最近,我们团队乃至我司整个云服务,上go的呼声越来越高!新服务已经开始用go开发,部分现有Java版的服务重构为go也只是时间问题而已,故相关技术积累势在必行!在云网络的分布式服务乃至在一切高并发,分布式后台服务中,golang都有着很大的优势. 据我对国内互联网行业的实际考察,了解,目前国内主流互联网公司都在积极投入go的怀抱…… 青云更是全栈使用了go…… 还有火的一塌糊涂的docker. 它为云而生. 它为并发而生. 还有go的安全.简洁.高效 有良好

Golang学习-第一篇 Golang的简单介绍及Windows环境下安装、部署

序言 这是本人博客园第一篇文章,写的不到位之处,希望各位看客们谅解. 本人一直从事.NET的开发工作,最近在学习Golang,所以想着之前学习的过程中都没怎么好好的将学习过程记录下来.深感惋惜! 现在将Golang的学习点滴记录分享,废话到此,下面进入正文. 注:此文及以后所有内容中的开发平台为:Windows 开发工具为:JetBrains Gogland x64版本 官方下载地址为:https://www.jetbrains.com/go/download/#section=windows

Golang学习笔记(1)---go程序一般结构

Go程序是通过 package来组织的(与python的库类似) 只有package名称为main的包可以包涵main函数(同时main函数也是一个程序的入口) 一个可执行程序有且仅有一个main包 通过import关键字来引入其他非main包 通过const关键字来进行常量的定义 通过在函数体外部使用var关键字来进行全局变量的声明与赋值 通过type关键字来进行结构(struct)或接口(interface)的声明----一般(自定义)类型 通过func关键字来进行函数的声明 一般格式为: