GO语言基础知识(二.基本数据类型,类型转化)

一.整形

1.java中的整形

java中整形包括byte,short,int,long

  1. byte:1字节,范围为-128到127。
  2. short:2字节,范围为-32,768到32,767。
  3. int:4字节,范围为-2,147,483,648到2,147,483,647。
  4. long:8字节,范围为-9,223,372,036,854,775,808到9,223,372,036,854,775,807。

 java中定义这几种类型:

package org.example;

public class Main {
    public static void main(String[] args) {
       byte num1 = 1;
       short num2 = 2;
       int num3 = 3;
       long num4 = 4;
    }
}

2.golang中的整形

golang中的整形大体分为int类型和uint类型

int类型和uint的类型区别在于:

int类型为有符号整形

int包括:int8,int16,int32,int64

  • int8:1 字节,范围为 -128 到 127。
  • int16:2 字节,范围为 -32,768 到 32,767。
  • int32:4 字节,范围为 -2,147,483,648 到 2,147,483,647。
  • int64:8 字节,范围为 -9,223,372,036,854,775,808 到 9,223,372,036,854,775,807。
  • int:根据操作系统平台,为 32 位或 64 位。

uint类型为无符号整形,只能表示正数不能表示负数

unit包括:uint8,unit16,uint32,uint64

  • uint8:1 字节,范围为 0 到 255。
  • uint16:2 字节,范围为 0 到 65,535。
  • uint32:4 字节,范围为 0 到 4,294,967,295。
  • uint64:8 字节,范围为 0 到 18,446,744,073,709,551,615。
  • uint:根据操作系统平台,为 32 位或 64 位。

 golang中定义这几种类型:

package main

import "fmt"

func main() {
	var (
		num1 int8   = 1
		num2 int16  = 2
		num3 int32  = -1
		num4 int64  = -2
		num5 uint8  = 3
		num6 uint16 = 4
		num7 uint32 = 5
		num8 uint64 = 6
	)
	fmt.Printf("数据类型为%T,值为%v\n", num1, num1)
	fmt.Printf("数据类型为%T,值为%v\n", num2, num2)
	fmt.Printf("数据类型为%T,值为%v\n", num3, num3)
	fmt.Printf("数据类型为%T,值为%v\n", num4, num4)
	fmt.Printf("数据类型为%T,值为%v\n", num5, num5)
	fmt.Printf("数据类型为%T,值为%v\n", num6, num6)
	fmt.Printf("数据类型为%T,值为%v\n", num7, num7)
	fmt.Printf("数据类型为%T,值为%v\n", num8, num8)
}

3.整形间类型转化:

1.)java中整形间的互相转化

在java中类型转化可以采用强转的方式来进行转化,例如:

package org.example;

public class Main {
    public static void main(String[] args) {
       byte num1 = 1;
       short num2 = 2;
       int num3 = 3;
       long num4 = 4;
       int num5 = (int) num1;
       int num6 = (int) num2;
       int num7 = (int) num3;
       int num8 = (int) num4;
       System.out.println(num5);
       System.out.println(num6);
       System.out.println(num7);
       System.out.println(num8);
    }
}

注意:类型转化通常由小的转化为大的值,从大的值转化成小的值可能会造成数据溢出或精度丢失的问题 

2.)golang中整形间的互相转化 

golang中的类型转化与java的类型转化比较类似,但是golang不像java拥有包装类可以自动拆装箱

下面是golang中的转化方法

package main

import "fmt"

func main() {
	var num int8 = 2
	num1 := int16(num)
	num2 := uint8(num)
	fmt.Printf("数据类型为%T,值为%v\n", num, num)
	fmt.Printf("数据类型为%T,值为%v\n", num1, num1)
	fmt.Printf("数据类型为%T,值为%v\n", num2, num2)
}

注意:int和uint转化的时候切记负数转化成uint会出问题 

二.浮点型

1.java中的浮点型

java中的浮点型包括float和double

  • float:4 字节,范围为约 ±3.40282347E+38F(有效位数为 6-7 位)。
  • double:8 字节,范围为约 ±1.79769313486231570E+308(有效位数为 15 位)。

 java中定义浮点型:

package org.example;

public class Main {
    public static void main(String[] args) {
        float num = 1.1f;
        double num1 = 1.2;
        System.out.println(num);
        System.out.println(num1);
    }
}

2.golang中的浮点型

Go语言提供了两种浮点类型:float32和float64,分别对应单精度浮点数和双精度浮点数。

float32类型的变量可以存储大约6个小数位的精度,而float64类型的变量可以存储大约15个小数位的精度。通常情况下,我们使用float64类型来进行浮点数计算,因为它提供了更高的精度。

  • float32:4 字节,范围为约 ±1.18E-38 到 ±3.4E+38(有效位数为 7 位)。
  • float64:8 字节,范围为约 ±2.23E-308 到 ±1.8E+308(有效位数为 15 位)。

 golang中定义浮点型:

package main

import "fmt"

func main() {
	var num float32 = 1.323
	var num1 float64 = 1.414
	fmt.Printf("数据类型为%T,值为%v\n", num, num)
	fmt.Printf("数据类型为%T,值为%v\n", num1, num1)
}

 注意:在进行金额相关的计算的时候java推荐使用BigDecimal,golang推荐使用decimal

package org.example;

import java.math.BigDecimal;

public class Main {
    public static void main(String[] args) {
        BigDecimal num = new BigDecimal("1.321");
        System.out.println(num);
    }
}

 golang使用decimal需要引入decimal包:

执行语句:go get github.com/shopspring/decimal

package main

import (
	"fmt"
	"github.com/shopspring/decimal"
)

func main() {
	var num, _ = decimal.NewFromString("1.312")
	fmt.Printf("数据类型为%T,值为%v\n", num, num)
}

三.布尔型

1.java中的布尔型

java中的布尔型为boolean,值为true,false,一般用于判断是否

package org.example;

import java.math.BigDecimal;

public class Main {
    public static void main(String[] args) {
        boolean flag = true;
        System.out.println(flag);
    }
}

2.golang中的布尔型

golang的布尔型为bool,值为true,false,一般用于判断是否

package main

import "fmt"

func main() {
	var flag bool = true
	fmt.Printf("数据类型为%T,值为%v\n", flag, flag)
}

四.字符型 / 字符串类型

1.java中的字符型

java的字符型为char类型:

  • char:2 字节,表示一个 Unicode 字符,范围为 0 到 65,535。

在java中字符串大多数使用String类型来定义字符串,很少会使用char类型

package org.example;

import java.math.BigDecimal;

public class Main {
    public static void main(String[] args) {
        char t = 't';
        System.out.println(t);
        String study = "study";
        System.out.println(study);
    }
}

 java中拼接两个字符串可以直接使用+号来拼接

package org.example;

import java.math.BigDecimal;

public class Main {
    public static void main(String[] args) {
        String name = "xiao" + "Duan" + "Yu";
        System.out.println(name);
    }
}

 java中两个String类型拼接采用StringBuffer和StringBuilder

StringBuffer线程安全,StringBuilder线程不安全,但是StringBuilder性能更好

package org.example;

import java.math.BigDecimal;

public class Main {
    public static void main(String[] args) {
        String name = "xiao" + "Duan" + "Yu";
        System.out.println(name);
        StringBuilder sb = new StringBuilder();
        sb.append(name);
        sb.append("study");
        sb.append("JAVA");
        System.out.println(sb);

        StringBuffer stringBuffer = new StringBuffer();
        stringBuffer.append(name);
        stringBuffer.append("study");
        stringBuffer.append("JAVA");
        System.out.println(stringBuffer);
    }
}

2.golang中的字符串类型

golang中字符串类型为string

  • string:表示一个字符串,由一系列的字节组成。

golang中定义一个string类型

package main

import "fmt"

func main() {
	var name string = "xiaoduanyu"
	fmt.Printf("数据类型为%T,值为%v\n", name, name)
}

 golang中string类型的采用操作

package main

import (
	"fmt"
	"strings"
)

func main() {
	var name string = "xiao duan yu"
	fmt.Printf("数据类型为%T,值为%v\n", name, name)
	//分割
	name2 := strings.Split(name, " ")
	//string数组拼接
	name3 := strings.Join(name2, "*")
	fmt.Printf("数据类型为%T,值为%v\n", name2, name2)
	fmt.Printf("数据类型为%T,值为%v\n", name3, name3)
	//是否包含
	var flag = strings.Contains(name, "xiao")
	fmt.Printf("数据类型为%T,值为%v\n", flag, flag)
	//长度
	var length = len(name)
	fmt.Printf("数据类型为%T,值为%v\n", length, length)
	//字符串出现的位置
	index := strings.Index(name, "a")
	fmt.Printf("数据类型为%T,值为%v\n", index, index)
	//前缀判断
	prefix := strings.HasPrefix(name, "xi")
	fmt.Printf("数据类型为%T,值为%v\n", prefix, prefix)
	//后缀判断
	suffix := strings.HasSuffix(name, "u")
	fmt.Printf("数据类型为%T,值为%v\n", suffix, suffix)
}

3.golang中byte rune 类型

go语言中的字符类型有

1. uint8 类型,或者叫 byte 型,代表了 ASCII 码的一个字符。
2. rune 类型,代表一个 UTF-8 字符

 byte类型,也就是uint8类型,定义byte类型使用单引号和java一致

package main

import "fmt"

func main() {
	a := 'a'
	fmt.Printf("数据类型为%T,值为%v\n", a, a)
	// 直接输出会输出对应的ascll值
	fmt.Println(a)
	fmt.Printf("数据类型为%T,值为%v,对应字符为%c", a, a, a)
}

 rune,也就是int32 类型专门用来处理 Unicode编码值,让基于 Unicode 的文本处理更为方便

package main

import "fmt"

func main() {
	name := "xiaoduanyu"
	// byte一般用于英文
	for i := 0; i < len(name); i++ {
		fmt.Printf("值为%c,对应ascll码值为%v\n", name[i], name[i])
	}

	// rune一般用于中文
	for _, r := range name {
		fmt.Printf("值为%c,对应的值为%v\n", r, r)
	}
}

  • 25
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值