Go基础:下划线“_”、变量和常量、数组、slice

目录 前言: Go语言的设计初衷 Go语言很特别 Go语言的主要特征 GO概览 Go基础 Go语言声明 下划线(很特殊) 变量声明 常量声明 数组 切片Slice 前言: Go语言的设计初衷 针对其他语言的痛点进行设计 并加入并发编程 为大数据、微服务、并发而生的通用编程语言 Go语言很特别 没有“对象”,没有继承多态、类等,没有泛型,没有try/catch 有接口,函数式编程,CSP

  • 0
  • 0
  • 阅读 ( 998 )

Golang入门-数据类型

程序实体     任何Go语言源码文件都由若干个程序实体组成的,再Go语言中,变量,常量,函数,结构体和接口统称为“程序实体”,而它们的名字统称为“标识符”。     标识符可以是任何unicode编码可以表示的字母字符,数字以及下划线“_”。不过,首字母不能是数字或下划线。 关键字 变量和常量    变量使用关键字var,常量使用关键字const,常量只能被赋予基本数据

  • 0
  • 0
  • 阅读 ( 972 )

GoLang-2(变量)

1、变量声明     Go语言中使用var关键字声明变量,且类型信息放在变量名之后   /* *变量声明:使用var关键字,类型信息放在变量名之后 */ varv1int varv2string varv3[5]int//数组 varv4[]int//数组切片 varv5*int//指针 varv6map[string]int//map,key为string类型,value为int类型   2、变量初始化       有时声明变量需要进行初始化,该场景下var关键字可以保留,但不是必须的

  • 0
  • 0
  • 阅读 ( 1168 )

【Go语言踩坑系列(六)】面向对象

声明 本系列文章并不会停留在Go语言的语法层面,更关注语言特性、学习和使用中出现的问题以及引起的一些思考。 问题思考 为什么有结构体? 首先,我们需要明确面向对象的思想是包含各种独立而又互相调用,这就需要一个承载的数据结构,那么这个结构是什么呢?很显然,在GO语言中就是结构体。 其次,结构体作为一种数据结构,无论是在C还是C++还是Go都发挥了极其重

  • 0
  • 0
  • 阅读 ( 1740 )

【Go语言踩坑系列(五)】错误与异常处理

声明 本系列文章并不会停留在Go语言的语法层面,更关注语言特性、学习和使用中出现的问题以及引起的一些思考。 为什么需要错误和异常处理 任何一行代码都可能存在不可预知的问题,而这些问题就是bug的根源。为了妥善处理这类问题,我们需要编写一些代码,这类代码被称为运维代码。通常情况下,我们需要发现问题、判断问题的种类、然后根据问题的种类,分别进行响

  • 0
  • 0
  • 阅读 ( 1203 )

【Go语言踩坑系列(九)】Channel(上)

声明 本系列文章并不会停留在Go语言的语法层面,更关注语言特性、学习和使用中出现的问题以及引起的一些思考。 我们知道,Go实现了两种并发形式,第一种是多线程共享内存,其实就是Java,C++等语言的多线程并发,通过锁来进行访问。另一种则是Go特有的CSP(communicatingsequentialprocesses)并发模型。 什么是CSP? CSP是CommunicatingSequentialProcess的简称,中文可以叫做通信顺序进程,

  • 0
  • 0
  • 阅读 ( 1142 )

【Go语言踩坑系列(八)】Goroutine(下)

声明 本系列文章并不会停留在Go语言的语法层面,更关注语言特性、学习和使用中出现的问题以及引起的一些思考。 引入 还记得我们在上一篇文章中提到的例子吗: funcmain(){ fori:=0;i<10;i++{ gofunc(){ fmt.Println(i) }() } } 现在我们分析一下这段代码,循环十次,每次使用go语句创建一个协程,并在每个协程中打印i值,注意这个i值是这条打印语句真正得到执行的时候,从外部for语句

  • 0
  • 0
  • 阅读 ( 1833 )

【Go语言踩坑系列(四)】字典

声明 本系列文章并不会停留在Go语言的语法层面,更关注语言特性、学习和使用中出现的问题以及引起的一些思考。 要点 本文关注Go语言map相关的语言特性。 map初始化与内存分配 首先,必须给map分配内存空间之后,才可以往map中添加元素: funcmain(){ varmmap[int]int//使用var语法声明一个map,不会分配内存 m[1]=1//报错:assignmenttoentryinnilmap } 如果你使用的是make来创建一个map,Go在

  • 0
  • 0
  • 阅读 ( 1130 )

【Go语言踩坑系列(七)】Goroutine(上)

声明 本系列文章并不会停留在Go语言的语法层面,更关注语言特性、学习和使用中出现的问题以及引起的一些思考。 进程,线程到协程的发展 计算机发展至今有几个至关重要的时期: 1.单任务时代 这个时代主要标志为批处理。我们都知道早期的计算机就是穿孔打卡来运行的,需要人工去做输入输出的处理工作,计算机只进行了计算,而且每次都只能执行一个流程,然后循环

  • 0
  • 0
  • 阅读 ( 1706 )

(十四)Go聊天室实践

并发编程和网络编程是现今行业开发中常用的技术。Go语言强大的语法设定使得并发和网络编程都变的简洁而高效。 下面使用并发和网络实现一个简单的网络在线聊天室。在整个聊天室的项目中,充分利用了协程并发,处理不同任务。 模块划分 整个聊天室程序可简单划分为如下模块,都分别使用协程来实现: 主协程(服务器): 负责监听、接收用户(客户端)连接请求,建

  • 0
  • 0
  • 阅读 ( 855 )

(十三)Go网络编程

网络介绍 网络协议 从应用的角度出发,协议可理解为规则,是数据传输和数据的解释的规则。假设,A、B双方欲传输文件。规定: 第一次,传输文件名,接收方接收到文件名,应答OK给传输方; 第二次,发送文件的尺寸,接收方接收到该数据再次应答一个OK; 第三次,传输文件内容。同样,接收方接收数据完成后应答OK表示文件内容接收成功。 由此,无论A、B之间传递何种文

  • 0
  • 0
  • 阅读 ( 906 )

解读 2018 之 Go 语言篇(上):为什么 Go 语言越来越热?

2018年接近尾声,InfoQ策划了“解读2018”年终技术盘点系列文章,希望能够给读者清晰地梳理出重要技术领域在这一年来的发展和变化。本篇文章是Go语言2018年终盘点,分为上下两篇。客观、深入分析2018年Go语言的技术发展现状,同时对明年可能的发展情况进行预测和展望。今年真可谓是不平静的一年,前有人工智能国家级战略的发布,行业已经在大跨步的挺进,但人才缺口每

  • 0
  • 0
  • 阅读 ( 802 )

GoLand:设置gofmt与goimports,保存时自动格式化代码

GoLand也支持在保存代码时,自动调用 gofmt 和 goimports 来自动格式化代码。在最新版的GoLand(2019.3)中,是通过FileWatchers插件来实现此功能的。 在此介绍一下GoLand中如何设置: 首先,得保证安装了一个叫做”FileWatchers”的插件,并设置为启用状态: 然后,直接在Tools->FileWatchers中,添加如下设置:  

  • 0
  • 0
  • 阅读 ( 1661 )

Windows下,Sublime text 在GoSublime中支持goimports

goimports可以自动对代码中的依赖包进行管理,如果有用到,就会自动import,对没有用到的包会进行自动删除。 安装goimports     方式1: gitclonehttps://github.com/golang/tools.git 我是在linux上将代码拉下来的。所以我将tools目录下的所有内容拷贝到win7的对应目录上(下面所示的路径)。 在你的gopath路径下新建文件夹:srcgolang.orgx,然后将tools文件夹放到x目录下 例如:D

  • 0
  • 0
  • 阅读 ( 883 )

go Fscanf 在读取文件时出现的问题

先要明白Fscanf的工作原理 Fscanf在遇到n才结束 遇到r时就会把r替换成0 这就有个问题,要注意自己的文本换行符是什么,在Windows下就是rn,在Linux,Mac下就是n,也就是说这里有个坑, 代码在Linux和Mac下读取数据文件是正常的,在Windows下就会遇到各种行末尾有个0,网上办法用什么替换啊,用什么自定义Scan函数啊,太麻烦了,直接使用自带IDE将打开的数据文件集换行符改成LF

  • 0
  • 0
  • 阅读 ( 855 )

Go语言import一个包但是不调用,那它import干啥子

一开始学习Go的时候,看到如下 import_"xxx/xxx" 其实这是调用里面的init方法做一些初始化,注册之类的。 例子 packagemain import( "database/sql" "fmt" _"github.com/go-sql-driver/mysql"//导入驱动程序 "time" ) funcmain(){ dsName:="root:xxxxxx@tcp(127.0.0.1:3306)/resk?charset=utf8&parseTime=true&

  • 0
  • 0
  • 阅读 ( 713 )

goland中报错: Unresolved reference 错误解决

前言 今天早上项目导入的包标红了,而且也包了unresolvedreference的错误,但是程序却可以正常运行,在网上找了多种方法,最后可以了,但是并不知道是哪一个起了作用,但是把试过的都记录整理下来。 方法一 把这个勾上 方法二 在file的invalidatecaches 方法三 可能你用goland打开了一个大的文件夹,里面包含很多小的项目,导致的报错。可以直接打开一个小的项目,就不会报错了

  • 0
  • 0
  • 阅读 ( 2797 )

Go语言踩坑:源代码import的是文件路径,而调用的时候使用的是包名

import后面跟的是相对文件夹路径(非文件路径) 包名是golang文件中package后面的字符,但包导入后使用的是包名非路径文件夹名称 文件名称在golang中仅仅是文件名称,没有编码含义

  • 0
  • 0
  • 阅读 ( 875 )

Go语言系列(十二):测试

测试 少DEBUG,多Testing go语言采用表格驱动测试 分离的测试数据和测试逻辑 明确的出错信息 可以部分失败 go语言的语法使得我们更容易实践表格驱动测试 //如果要测试add函数,那么文件名就叫做add_test.go //测试方法名字就叫做TestAdd packagemain import"testing" funcadd(a,bint)int{ returna+b } funcTestAdd(t*testing.T){ tests:=[]struct{a,b,cint}{

  • 0
  • 0
  • 阅读 ( 663 )

Go语言系列(十三):补充一些库知识

http 使用http客户端发送请求 使用http.Client控制请求头部 使用httputil简化工作 funcmain(){ resp,err:=http.Get("http://www.baidu.com") iferr!=nil{ panic(err) } deferresp.Body.Close() s,err:=httputil.DumpResponse(resp,true) iferr!=nil{ panic(err) } fmt.Printf("%sn",s)

  • 0
  • 0
  • 阅读 ( 1194 )