PHP转Go系列 | 数组切片的使用姿势

news2024/11/27 22:20:05

大家好,我是码农先森。

简介

在 PHP 语言中数组的使用很简单,易用程度简直变态,无论多么复杂的数据格式都可以用数组来表达,可以随心所欲的使用。

<?php
$array = [1, 'name', ['sex' => '男']];
print_r($array);

$array = [];
$array[0] = 'name';
$array[1] = 1;
print_r($array);

在 Go 语言中数组是一段固定长度的连续内存区域,在声明数组时,要先确定数组的长度,而且数组中的元素只能使用一种类型。

package main

func main(){
	// [4] 代表数组长度为 4,string 是数组中元素的类型,花括号中的是数组元素
	array1 := [4]int{"a", "b", "c", "d"}
	fmt.Print(array1)

	// 用 ... 方法来省略掉中括号的数值,编译器会自动确定数组中的元素。
	array2 := [...]string{"a", "b", "c", "d"}
	fmt.Print(array2)
}

遍历

在 PHP 语言中通过 foreach 进行遍历。

<?php
$array = ["a", "b", "c", "d"];
foreach($array as $k => $v) {
    echo $v;
}

在 Go 语言中通过 range 进行遍历。其中 “_” 来代替掉原来的变量 k,它指的是把当前赋的值忽略,不然编译会报错误。

package main

import (
	"fmt"
)

func main(){
    array := [...]string{"a", "b", "c", "d"}
    for _, v := range array {
        fmt.Print(v)
    }
}

截取

在 PHP 语言中对数组截取使用 array_slice 函数即可。

<?php
// 从数组的第二个元素开始,截取两个元素
$array = ["a", "b", "c", "d"];
print_r(array_slice($array, 1, 2));

在 Go 语言中可以直接取出第二到第四个元素之间的数据。

package main

import (
	"fmt"
)

func main(){
    array := [...]string{"a", "b", "c", "d"}
    fmt.Print(array[1:3])
}

追加

在 PHP 语言中为数组添加一个新元素,使用 array_push 函数即可。

<?php

$array = ["a", "b", "c", "d"];
array_push($array, 6);
print_r($array);

在 Go 中语言中使用 append 函数,这里实际上是对切片的添加操作,而不是数组。

package main

import (
	"fmt"
)

func main(){
    array := []string{"a", "b", "c", "d"}
    array = append(array, 6)
    fmt.Print(array)
}

删除

在 PHP 语言中删除数组元素非常简单,直接使用 unset 函数即可。

<?php
$array = ["a", "b", "c", "d"];
unset($array[1]);
print_r($array);

在 Go 语言中没有提供原生的删除方法,只能利用切片的特性,截取部分的切片来实现删除的操作,这种方式使用起来比较蹩脚。

package main

import (
	"fmt"
)

func main(){
    index := 1
    array := []string{"a", "b", "c", "d"}
    array = append(array[:index], array[index+1:]...)
    fmt.Print(array)
}

合并

在 PHP 语言中可以使用 array_merge 函数来合并数组。

<?php
$array1 = ["a", "b"];
$array2 = ["c", "d"];
$result = array_merge($array1, $array2);
print_r($result);

在 Go 语言中要合并两个切片,可以使用 append 函数。

package main

import "fmt"

func main() {
    array1 := []string{"a", "b"}
    array2 := []string{"c", "d"}
    result := append(array1, array2...)
    fmt.Print(result) 
}

总结

对于长期写 PHP 的朋友来说,习惯了随性所欲的使用数组。转到 Go 语言之后会被强类型所困扰,使用数组之前都需要先确定类型,在大多数的情况下还会使用到切片的特性。因此在实际的编程中需要多注意数组、切片的特性,避免出错。

推荐

PHP 语言中的函数是如此强大、丰富、便利,PHP 程序员转到 Go 语言来,发现很多方法都需要自己封装,很不适应。因此给大家推荐一个很好网站,可以直接通过 PHP 语言中的函数找到对应在 Go 语言中的函数,这简直是转 Go 语言 PHP 程序员的福音,网站地址:https://www.php2golang.com/


欢迎关注、分享、点赞、收藏、在看,我是码农先森。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1845059.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【LLM之NL2SQL】DAIL-SQL论文阅读笔记

研究背景 该研究旨在提供一个全面、系统的评估框架&#xff0c;用于评估基于大型语言模型&#xff08;LLM&#xff09;的Text-to-SQL技术。特别强调了不同的提示工程策略的有效性和效率&#xff0c;以及开源LLM的可行性。研究的重点是评估在零样本和少样本场景下的不同问题表示…

1.3自然语言的分布式表示-word2vec

文章目录 0基于计数的方法的问题1什么是基于推理的方法2神经网络中单词的表示2.1 MatMul 层的实现 3简单word2vec的实现3.1 CBOW模型的结构3.1.1神经元视角3.1.2层的视角3.1.3多层共享权重时存在的问题 3.2 CBOW模型的学习3.3单词的分布式表示 代码都位于&#xff1a;nlp&#…

《梦醒蝶飞:释放Excel函数与公式的力量》4.1if函数

第4章&#xff1a;逻辑与条件函数 第一节4.1 if函数 在Excel中&#xff0c;逻辑函数用于处理基于特定条件的真假判断&#xff0c;它们是构建复杂公式和进行高级数据分析的基础。本章将深入探讨逻辑函数的使用方法&#xff0c;特别是IF函数&#xff0c;这是Excel中最为常用的条…

Node.js 是一个开源的 跨平台的JavaScript运行环境

https://www.npmjs.com/ 中央仓库 Visual Studio Code - Code Editing. Redefined https://openjsf.org/ OpenJS 促进了关键 JavaScript 技术在全球范围内的广泛采用和持续发展。 Apache服务器 Nginx服务器 Tomcat服务器 Node.js服务器 Gunicorn服务器 uW…

6个步骤实现 Postman 接口压力测试

&#x1f345; 视频学习&#xff1a;文末有免费的配套视频可观看 &#x1f345; 点击文末小卡片 &#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 这里讲是Postman做接口并发测试&#xff0c;基础用法不做赘述 1、第一步接口可以通的情况下点击…

番外篇 | FFCA-YOLO复现:面向遥感图像的小目标检测最新方法 | 解决小目标检测特征表示不足和背景混淆等问题

前言:Hello大家好,我是小哥谈。在论文中,作者的动机是设计一个高精度同时具备潜在的实时处理能力的小目标检测器。由此,作者首先分别提出了特征增强模块(FEM)与空间上下文感知模块(SCAM)来丰富局部和全局的上下文特征信息。其中,FEM通过多分支卷积拓宽了骨干网络的感受…

oracle发送https请求

参照 https://docs.oracle.com/cd/E11882_01/appdev.112/e40758/u_http.htm#i1025869 https://docs.oracle.com/cd/E11882_01/network.112/e40393/asowalet.htm#ASOAG160 https://docs.oracle.com/cd/E11882_01/appdev.112/e40758/d_networkacl_adm.htm#ARPLS148 https://d…

环境配置01:Torch、CUDA适配与显卡驱动更新

说明&#xff1a; torch版本依赖于CUDA版本与Python版本 Start Locally | PyTorch CUDA版本依赖于显卡驱动版本 1. CUDA 12.5 Release Notes — Release Notes 12.5 documentation 显卡驱动版本依赖于显卡型号与电脑系统 当前电脑3060显卡&#xff0c;安装了CUDA V11.6与tor…

查询mysql库表的几个语句

1、查询某个数据库的所有表 SELECTtable_name FROMinformation_schema.TABLES WHEREtable_schema database_namedatabase_name替换成你需要查询的数据库名称 2、查询某张表的所有字段名称 SELECTCOLUMN_NAME,column_comment FROMinformation_schema.COLUMNS WHEREtable…

maxwell源码编译安装部署

目录 1、组件环境 2、maxwell安装前提 3、maxwell安装 3.1、maxwell下载 3.1.1、最新版本下载 ​编辑 3.1.2、历史版本下载 3.2、maxwell安装 3.3、maxwell配置 3.2.1、mysql开启binlog 3.3.2、maxwell元数据配置 3.3.3、maxwell配置任务 4、maxwell部署问题 4.1、utf…

异地如何共享视频文件?

人们对于信息流动的需求越来越高。尤其在分布式团队合作、远程办公的背景下&#xff0c;异地共享视频文件成为了一项重要的技术需求。本文将介绍一款名为【天联】的组网产品&#xff0c;它能够实现不同地区间快速组建局域网&#xff0c;解决不同设备间的信息远程通信问题。 2.…

c++设计模式之一创建型模式

1、创建型模式&#xff08;常见的设计模式&#xff09; Factory 模式&#xff08;工厂模式&#xff0c;被实例化的子类&#xff09; 在面向对象系统设计中经常可以遇到以下的两类问题&#xff1a; 下面是第一类问题和代码示例&#xff1a;我们经常会抽象出一些类的公共接口以…

vue3项目使用Electron打包成exe的方法与打包报错解决

将vue3项目打包成exe文件方法 一、安装 1.安装electron npm install electron --save-devnpm install electron-builder --save-dev 2.在vue项目根目录新建文件index.js // index.js// Modules to control application life and create native browser window const { app…

SBTI认证的申请流程是什么?

SBTI&#xff08;科学基准目标倡议&#xff09;认证的申请流程通常包括以下几个关键步骤&#xff0c;以下是根据参考文章整理出的清晰流程&#xff1a; 咨询和准备阶段&#xff1a; 企业首先需要咨询SBTI认证机构&#xff0c;了解认证的标准和要求&#xff0c;并确定是否有资格…

森林火灾扑救特类车辆有哪些_鼎跃安全

森林消防是在森林火灾发生时&#xff0c;为了保护森林资源&#xff0c;防止火势蔓延&#xff0c;采取了一系列的应用措施&#xff0c;针对自然环境中的火灾消防工作。森林灭火主要包括预警、预防措施、火情监测、火势控制和灭火等&#xff0c;森林火灾发生的地形往往复杂崎岖&a…

转炉五万立煤气柜柜位计消除虚假回波的方法

转炉五万立煤气柜柜位计消除虚假回波的方法 一、五万立转炉煤气柜柜位计问题 五万立转炉煤气柜工艺简介:五万立转炉煤气柜是将净化除尘后的一炼钢工序副产转炉煤气回收至气柜中储存,储存的转炉煤气在经过电除尘器净化除尘,经转炉煤气加压站加压后分别输送至一炼钢工序,吉瑞…

Hi3861 OpenHarmony嵌入式应用入门--PWM 三色灯

这篇文章是讲解的pwm控制三色灯的部分&#xff0c;这部分也是后续全彩智能灯的基础。 硬件原理如下 IO管脚定义在hi-12f_v1.1.2-规格书-20211202.pdf文档中 GPIO API API名称 说明 unsigned int IoTGpioInit(unsigned int id); GPIO模块初始化 hi_u32 hi_io_set_func(hi_i…

【Web APIs】DOM 文档对象模型 ④ ( querySelector 函数 | querySelectorAll 函数 | NodeList 对象 )

文章目录 一、querySelector 函数1、querySelector 函数简介2、完整代码示例 二、querySelectorAll 函数1、querySelectorAll 函数简介2、完整代码示例 三、NodeList 对象1、NodeList 对象简介2、完整代码示例 本博客相关参考文档 : WebAPIs 参考文档 : https://developer.moz…

Vue 自定义ElementUI的Loading效果

import { loadingText, messageDuration } from "/settings";import { Loading } from "element-ui"; // loadingText、messageDuration 这两个参数我是调的公共配置文件,按自己需求来 const install (Vue, opts {}) > {/* 全局多彩Loading加载层 *…

办公技能——如何写好会议纪要,提升职业素养

一、什么是会议纪要 会议纪要是一种记载、反映会议情况和议定事项的纪实性公文&#xff0c;是贯彻落实会议精神、指导工作、解决问题、交流经验的重要工具。 会议纪要可以多向行文&#xff1a;向上级机关汇报会议情况&#xff0c;以便得到上级机关对工作的指导&#xff1b;向同…