IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发工具 -> idea、goland泛型语法报错解决|go1.18泛型初体验 -> 正文阅读

[开发工具]idea、goland泛型语法报错解决|go1.18泛型初体验

go在1.18正式推出了泛型,你是否和博主一样好奇其语法呢?快啊来看看吧

1. 版本更新&插件更新

go如何更新到最新版本,可以查看https://www.hengyumo.cn/momoblog/detail/20220417102155

idea插件更新:
setting >> plugin >> installed
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KUcGWHUV-1651372224690)(https://www.hengyumo.cn/momoclouddisk/file/download?code=202204171042964_image.png)]

全部更新之后

idea版本更新(可能要更新多次,直到更新到不能更新为止):
help >> check update
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gRI4eM3h-1651372224691)(https://www.hengyumo.cn/momoclouddisk/file/download?code=202204171056705_image.png)]

在此处勾选上泛型支持
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MWZ8C2gM-1651372224692)(https://www.hengyumo.cn/momoclouddisk/file/download?code=202204171047942_image.png)]

可以看到,现在使用泛型已经不会报语法错误了:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iXbIQsGn-1651372224692)(https://www.hengyumo.cn/momoclouddisk/file/download?code=202204171125562_image.png)]

2. 基础语法

package test_genericity

import (
	"fmt"
)

func MyPrintln[C any](a C) {
	fmt.Println(a)
}

func Example_g1() {
	MyPrintln(1)
	MyPrintln("小王")
	MyPrintln([]int{3, 2, 1})
	//Output:
	//1
	//小王
	//[3 2 1]
}


any代表任意类型,等于interface{}

func min[T ~int | ~float64](x, y T) T {
	if x > y {
		return y
	} else {
		return x
	}
}

func Example_g2() {
	//f := min                   // illegal: min must be instantiated with type arguments when used without being called
	minInt := min[int] // minInt has type func(x, y int) int
	a := minInt(2, 3)  // a has value 2 of type int
	fmt.Println(a)
	b := min[float64](2.0, 3) // b has value 2.0 of type float64
	fmt.Println(b)
	c := min(b, -1) // c has value -1.0 of type float64
	fmt.Println(c)
	//d := min(1, 0.5) // 语法错误,default type float64 of 0.5 does not match inferred type int for T
	// Output:
	// 2
	// 2
	// -1
}

上例演示了使用~int | ~float64作为泛型约束,实现了一个可以通用比较int或者float64的min函数。

  开发工具 最新文章
Postman接口测试之Mock快速入门
ASCII码空格替换查表_最全ASCII码对照表0-2
如何使用 ssh 建立 socks 代理
Typora配合PicGo阿里云图床配置
SoapUI、Jmeter、Postman三种接口测试工具的
github用相对路径显示图片_GitHub 中 readm
Windows编译g2o及其g2o viewer
解决jupyter notebook无法连接/ jupyter连接
Git恢复到之前版本
VScode常用快捷键
上一篇文章      下一篇文章      查看所有文章
加:2022-05-07 11:21:14  更:2022-05-07 11:22:09 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/14 14:53:41-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码