2018.10.07 19:41 字数 892 阅读 317评论 0喜欢 0

Go(又称Golang[3])是Google开发的一种静态强类型、编译型、并发型,并具有垃圾回收功能的编程语言。来自维基百科

1.什么是Go语言?

image.png

Go是一门并发支持、垃圾回收和编译型系统编译语言,旨在创造一个门具有在静态编译语言的高性能和动态语言的高效开发之间拥有良好平衡点的一门编程语言。

Go语言是Rob Pike以及Ken Thompson于2007年9月开始设计的,Go是基于Inferno操作系统所开发的。[4]Go于2009年11月正式宣布推出,成为开放源代码项目,并在Linux及Mac OS X平台上进行了实现,后来追加了Windows系统下的实现。(这个类似土拨鼠的logo是由Rob Pike 的妻子 Renee French 绘制的)

2. Go语言的优点

Go语言的价值:Go在谷歌:以软件工程为目的的语言设计

Go的主要特点有如下几点:

  • 1、类型安全和内存安全
  • 2、以非常直观和极低代价的方案实现高并发
  • 3、高效的垃圾回收机制
  • 4、快速编译(同时解决了C语言中头文件太多的问题)
  • 5、为多核计算机提供性能提升的方案

3.Go语言的项目架构

Go语言的工作目录如下表,根据约定,GoPath下需要建立3个目录

目录 含义
bin 存放编译后生成的可执行文件
pkg 存放编译后生成的包文件
src 存放项目源码

GOPATH是的你的工作目录,GOROOT是你的安装目录。

程序的整体结构如下图所示:

image.png

4.Go语言的开发环境

本教程采用go1.9以及goland 2018.1的开发环境,首先要学会环境配置(这里就不讲了,比较简单),然后开始Go的开发之旅了!

1.新建一个HelloWord.go文件

在右键新建的时候会两种文件格式:

image.png

Empty file是新建后是一个空文件,然后Simple Application新建后会有main函数的示例代码。

package main
import "fmt"
func main() {
fmt.Print("hello,world!")
}

Go程序的一般结构:

  • 1、Go程序是通过package来组织的;
  • 2、只有package名称为main的包可以包含main函数,一个可执行程序有且仅有一个main包;
  • 3、通过import关键字来导入其他非main包;
  • 4、通过const关键字进行常量的定义;
  • 5、通过在函数体外部使用var关键字来进行全局变量的声明与赋值;
  • 6、通过type关键字来进行结构(struct)或接口(interface)的声明;
  • 7、通过func关键字来进行函数的声明。

运行结果如下:

image.png

2.基本类型

go语言的基本类型如下:

image.png
image.png
image.png

示例如下:

package main
import (
"fmt"
"strconv"
)
func main() {
//声明和赋值
var a int = 65
var c int = 75
//简化赋值和显示强制转换
b:= string(a)
//转换为数字
d:= strconv.Itoa(c)
fmt.Println(b)
fmt.Println(d)
}

结果如下:

image.png

因为string()表示将数据转换为文本格式,因此计算机中存储的任何东西本质都是数字,因此此函数自然地认为我们需要的是65表示的文本A。

3.函数

函数的调用如下:参考文件Go指南中文版

//func 方法名  形式参数  返回参数类型
func add(x int,y int) int {
return x+y
}
//func add(x ,y int) int {
// return x+y
//}
func main() {
fmt.Print(add(42,13))
}

4.多值返回

package main
import "fmt"
func main() {
a,b:=swap("hello","world")
fmt.Print(a,b)
}
func swap(a string, b string) (string,string) {
//这个可能是交换程序了,甚至不需要不需要一个临时变量,但是这个内部是怎么做的呢?
return b,a
}

Q:go语言中swap方法是如何做的呢?

5.变量以及短变量的使用

package main
import "fmt"
var i,j int =1,2
func main() {
var c, python, java = true,false,"no"
//短变量的声明和赋值
k:=3
fmt.Print(i,j,c,python, java,k)
}

6.各种类型的初始值

package main
import "fmt"
func main() {
var i int
var f float64
var b bool
var s string
fmt.Printf("%v %v %v %q\n", i, f, b, s)
}
image.png

7.类型转换(必须显示转换,在Go中不能隐式转换)

package main
import (
"math"
"fmt"
)
func main() {
var x, y int = 3, 4
//将xy的值强制类型转换为float64类型
var f float64 = math.Sqrt(float64(x*x+y*y))
//unit无符号整数
var z uint = uint(f)
fmt.Print(x,f,z)
}

5.参考资料

https://go-zh.org/doc/

Go编程基础(介绍和安装)的更多相关文章

  1. shell脚本编程基础介绍

    Linux系统——shell脚本编程基础介绍 1.什么是shell 它是一个命令解释器,在linux/unix操作系统的最外层,负责直接与用户对话,把用户的输入解释给操作系统,并处理各种操作输出的结果 ...

  2. Winsock编程基础介绍 .

    相信很多人都对网络编程感兴趣,下面我们就来介绍,在网络编程中应用最广泛的编程接口Winsock API. 使用Winsock API的编程,应该了解一些TCP/IP的基础知识.虽然你可以直接使用Win ...

  3. Flume(一)Flume的基础介绍与安装

    一.背景 Hadoop业务的整体开发流程: 从Hadoop的业务开发流程图中可以看出,在大数据的业务处理过程中,对于数据的采集是十分重要的一步,也是不可避免的一步. 许多公司的平台每天会产生大量的日志 ...

  4. <转>Socket编程——基础介绍

    最近系统的看了下unix网络编程的一些内容,对socket的理解有了进一步的加深,在看APUE的时候,那会儿看socket上面介绍的比较少,只是模糊的懂了如何去写一个简单的TCP服务端和客户端,对其中 ...

  5. Redis基础介绍及安装示例

    1.基本概念 Redis是由Salvatore Sanfilippo(意大利)开发的一个开源的高性能键值存储数据库,于2009年发布第一个版本并与同一年开源,官方站点:http://www.redis ...

  6. shell脚本之编程基础介绍

    1.shell脚本简介 1.1 shell是什么? shell是一个命令解释器,它在操作系统的最外层负责直接与用户对话,把用户的输入解释给操作系统:并处理各种各样的操作系统的输入,将结果输出到屏幕返回 ...

  7. Hadoop 综合揭秘——MapReduce 基础编程(介绍 Combine、Partitioner、WritableComparable、WritableComparator 使用方式)

    前言 本文主要介绍 MapReduce 的原理及开发,讲解如何利用 Combine.Partitioner.WritableComparator等组件对数据进行排序筛选聚合分组的功能.由于文章是针对开 ...

  8. Web3D编程入门总结——WebGL与Three.js基础介绍

    /*在这里对这段时间学习的3D编程知识做个总结,以备再次出发.计划分成“webgl与three.js基础介绍”.“面向对象的基础3D场景框架编写”.“模型导入与简单3D游戏编写”三个部分,其他零散知识 ...

  9. windows下mongodb基础玩法系列一介绍与安装

    windows下mongodb基础玩法系列 windows下mongodb基础玩法系列一介绍与安装 windows下mongodb基础玩法系列二CURD操作(创建.更新.读取和删除) windows下 ...

  10. laravel基础课程---1、laravel安装及基础介绍(laravel如何安装)

    laravel基础课程---1.laravel安装及基础介绍(laravel如何安装) 一.总结 一句话总结: [修改composer镜像地址].[明确laravel的安装要求].[安装指定版本的la ...

随机推荐

  1. webpack的一些坑

    最近自己着手做一个小的Demo需要webpack,目前版本号是4.41.2,想使用的版本是3.6.0,因3x版本和4x版本很多地方不同,所以在安装过程中也是很多坎坷,下面是遇到的一些坑,和一些解决办法 ...

  2. MySQL查询指定表的字段名称

    1,查询表中所有字段(横排):SELECT GROUP_CONCAT( COLUMN_NAME SEPARATOR "," ) FROM information_schema.CO ...

  3. Win10 UEFI 系统安装教程

    1:首先我们需要先拿一个U盘,制作一个带UEFI PE.(网上的大白菜以及老毛桃都可以,我用的是从网上找的WIN10 PE.WIN10 PE的好处是集成了NVME驱动,可以认得到SM951 NVME版 ...

  4. 关于mysql的null相关查询的一些坑

    我们先看一下效果,然后在解释,示例如下: mysql> create table test5 (a int not null,b int,c varchar(10)); Query OK, 0 ...

  5. 运行带有Activiti modeler时,出现这样的报错: java.rmi.AccessException: Cannot modify this registry

    最近在做整合Activiti Modeler工作流在线设计器的工作,运行IDEA时,出现了这样一个错误信息: 原因及解决办法:   Activiti默认打开了jmx功能,默认端口为1099,idea中 ...

  6. 用Java访问带有Kerberos认证的HBase

    程序代码实例如下:    package com.hbasedemo; import java.io.IOException; import org.apache.hadoop.conf.Config ...

  7. 对ssm框架里面的一些常用注解的理解

    @Componcnt :作用就是把当前类对象存入spring容器中 属性:value 用于指定bean的id 当我们不写的时候默认就是当前类名,并且首字母要小写 ------------------- ...

  8. C# VB .net读取识别条形码线性条码codabar

    codabar是比较常见的条形码编码规则类型的一种.如何在C#,vb等.NET平台语言里实现快速准确读取codabar条形码呢?答案是使用SharpBarcode! SharpBarcode是C#快速 ...

  9. DEVexpress GridControl 属性设置

    1. 如何解决单击记录整行选中的问题 View->OptionsBehavior->EditorShowMode 设置为:Click 2. 如何新增一条记录 (1).gridView.Ad ...

  10. php调用webservice接口,java代码接收不到参数

    前段时间做了一个项目的二次开发,有个功能是需要php调用java实现的webservice接口,并传递一些参数给接口,然后按照对方提供的接口说明文档进行传参调用,java那边有接收到请求,但是参数总是 ...