前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >golang基础(一)go的特点、数据类型以及变量的定义

golang基础(一)go的特点、数据类型以及变量的定义

作者头像
GH
发布2020-03-25 23:32:10
1.5K0
发布2020-03-25 23:32:10
举报

静态语言

静态类型语言:与动态类型语言刚好相反,它的数据类型检查发生在在编译阶段,也就是说在写程序时要声明变量的数据类型。C/C++、C#、Java都是静态类型语言的典型代表。

动态语言

动态类型语言:是指在运行期间才去做数据类型检查的语言。在用动态语言编程时,不用给变量指定数据类型,该语言会在你第一次赋值给变量时,在内部将数据类型记录下来。Python和Ruby就是一种典型的动态类型语言

强类型语言

强类型语言:使之强制数据类型定义的语言。没有强制类型转化前,不允许两种不同类型的变量相互操作。强类型定义语言是类型安全的语言,如Java、C# 和 Python,比如Java中“int i = 0.0;”是无法通过编译的

弱类型语言

弱类型语言:数据类型可以被忽略的语言。与强类型语言相反, 一个变量可以赋不同数据类型的值,允许将一块内存看做多种类型,比如直接将整型变量与字符变量相加。C++、PHP都是弱类型语言,比如C++中“int i = 0.0;”是可以编译运行的;

跨平台编译型语言

可以跨平台编译,可以在windows系统下编译Linux系统运行的程序,也就是在这个平台可以编译另一个平台的可执行文件。

go就可以跨平台编译,python则需要安装python解释器而且不同平台安装python解释器的方式还是不一样的,java需要安装java虚拟机(jdk)不同平台安装方式也是不同的,c/c++需要在不同平台上现场编译,这样go的优势就凸显出来了。使用go可以在自己的电脑上写好直接编译成服务器可以执行的文件拿过去运行就可以了,省去了搭建环境的繁琐步骤。

go的特点:垃圾回收机制、支持面向对象和面向过程(go不是一门纯粹的面向对象语言,没有类的概念,但可以实现面向对象的特性:继承、封装、多态)

go的源码是由c写起来的,1.5以后是自己写自己,这一点和python是类似的python源码期初也是用c/c++写的,后来就自己写自己。

目前go的使用:各大互联网公司的运维、后端都有使用go,比较流行的k8s(容器编排)使用go写的,由于区块链的第一个开源项目使用go写的,所以在做区块链时用go的也比较多。

目前go的劣势是语言新,模块少。

go语言的前景

go出现的比较晚,具备其他语言所不具有的先天优势:更加适合现代处理器的多核运行,编程上也综合了前面编程语言的优势,有人说go将会称霸编程语言的下一个十年。

开发环境的安装

一、安装开发环境

二、IDE的安装

go的数据类型

说明:go和python不同,go的代码和缩进没有关系。

数字

int

int:默认是计算机的执行位数,如32位计算机则是int32,

int8:存储长度是8个比特位,第一位表示正负号,后七位表示内容可表示正2^7-1,下面同理

int16

int32

int64

uint:正整数

uint8:八个bit都表示内容,也就是可以表示[0,2^8-1),所以unit8别名byte(字节)

uint16

uint32:别名rune,4个字节,表示一个字符

uint64

float

float32

float64

complex(复数)

complex32

complex64

字符串

string:双引号引起来的是字符串,注意这里必须是双引号,单引号三引号都不行,单引号会将引在里面的字符的对应的ASCII码编号打印出来。反引号是支持换行的字符串。

布尔

这里的bool类型只有:true和false两种状态

0,1和bool没有关系

常量

这里的常量是不可变得,如果修改了会报错,不可以简略声明。通常用来定义数据库连接地址,端口号等

代码语言:javascript
复制
package main

import "fmt"

const name = "zgh"//常量的定义
const name1,age = "zgh",20//一次定义多个常量
func main(){
}

go中的注释

单行注释//多行注释/*要注释的内容*/

go的注释方式是从C继承过来的,除了C语言JavaScript也使用这样的注释方式。

代码编写规则

代码语言:javascript
复制
package main    // 必须指明是哪个包 main包
//表示导入fmt包,对比python即可
import "fmt"
func main() {   //定义了一个main函数
	fmt.Println(a..."hello world")  //打印出helloworld
}
/*注意:
1.go的代码必须在main函数中写,go程序的入口是main包下的main函数,这点和C语言相似
2. fmt.Println("hello world")  你看到的a... 其实是goland给你提示的,函数的形参是a...,在其他IDE下是没有a...的
3.go语言中,包导入必须使用,否则报错,注释掉,包自动删除(goland做的,其他编辑器,没有)
4.go文件名不能和main函数等函数名或者包名重名,否则会报错
*/

来对比一下C语言

代码语言:javascript
复制
#include <stdio.h>
int main()
{
    /* 我的第一个 C 程序 */
    printf("Hello, World! \n");
    return 0;
}

/*
所有的 C 语言程序都需要包含 main() 函数。 代码从 main() 函数开始执行。
printf() 用于格式化输出到屏幕。printf() 函数在 "stdio.h" 头文件中声明。
stdio.h 是一个头文件 (标准输入输出头文件) , #include 是一个预处理命令,用来引入头文件。 当编译器遇到 printf() 函数时,如果没有找到 stdio.h 头文件,会发生编译错误。
return 0; 语句用于表示退出程序
*/

go代码的执行

代码语言:javascript
复制
//执行go代码
1 goland上点击右键  Run  就可以执行(仅限于goland,vs code等其他编辑器都没有run)
2 先编译,再执行正统的用法(go是编译型语言),用命令
  编译:go build s1.go   编译,编译成当前平台的可执行文件  s1.exe
  执行:s1.exe
3 编译并执行(在vs code上的命令窗口下执行go文件)
	go run s1.go    相当于2中的所有步骤,不产生可执行文件 s1.exe

定义变量的三种方式

代码语言:javascript
复制
package main

import "fmt"

func main(){
	//fmt.Println("hello world")
    //1 第一种:全定义
	//var关键字 变量名 变量类型 = 变量值
	var a int = 10
	fmt.Println("a:",a)

    //2 第二种:类型推导(自动推导出变量类型)
	var b = 10
	fmt.Println("b:",b)

    //3 第三种:简略声明(这个用的多)  冒号跟等号是一起的
	c := 10
	fmt.Println("c:",c)

    //4 只定义变量,不赋值
	var d int
	fmt.Println("d:",d)
	
    //5 声明多个变量,三种方式都可以
    //var e,f,g int = 1,2,3
	//var e,f,g = 10,11,"xxx"
	e,f,g := 10,11,"xxx"
	fmt.Println("e:",e,"f:",f,"g:",g)
    
    //6 变量不能重复定义
    //var h int
	//var h = 90//重复定义会报错
	//h := 90//重复定义会报错
	//h = 90//重复定义会报错
	var h int
	//var h,i = 10,20//重复定义会报错
	h,i := 10,20//允许(特殊情况)
	fmt.Println(h,i)
}

/*
总结:
	 1 变量定义了必须使用,否则报错(只有go要求这样)
	 2 查看变量没写
     3 变量要先定义再使用
	 4 变量类型是固定的,不允许中途改变(静态语言)
	 5 如果只是定义变量,必须指定类型,只能用第一种定义方式
	 6 变量不允许重复定义
强调:
	 之后所有类型的变量定义都参照前三种定义变量的方式
*/
代码语言:javascript
复制
a: 10
b: 10
c: 10
d: 0
e: 1 f: 2 g: 3
e: 10 f: 11 g: xxx
e: 10 f: 11 g: xxx
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-03-24 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 静态语言
  • 动态语言
  • 强类型语言
  • 弱类型语言
  • 跨平台编译型语言
  • go语言的前景
  • 开发环境的安装
  • go的数据类型
    • 数字
      • int
      • uint:正整数
      • float
      • complex(复数)
    • 字符串
      • 布尔
        • 常量
        • go中的注释
        • 代码编写规则
          • go代码的执行
            • 定义变量的三种方式
            相关产品与服务
            容器服务
            腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档