Rust vs Go:常用语法对比(八)

2023-11-12

alt

题目来自 Golang vs. Rust: Which Programming Language To Choose in 2023?[1]


141. Iterate in sequence over two lists

Iterate in sequence over the elements of the list items1 then items2. For each iteration print the element.

依次迭代两个列表 依次迭代列表项1和项2的元素。每次迭代打印元素。

package main

import (
 "fmt"
)

func main() {
 items1 := []string{"a""b""c"}
 items2 := []string{"A""B""C"}

 for _, v := range items1 {
  fmt.Println(v)
 }
 for _, v := range items2 {
  fmt.Println(v)
 }
}

a
b
c
A
B
C

fn main() {
    let item1 = vec!["1""2""3"];
    let item2 = vec!["a""b""c"];
    for i in item1.iter().chain(item2.iter()) {
        print!("{} ", i);
    }
}

1 2 3 a b c


142. Hexadecimal digits of an integer

Assign to string s the hexadecimal representation (base 16) of integer x.
E.g. 999 -> "3e7"

将整数x的十六进制表示(16进制)赋给字符串s。

package main

import "fmt"
import "strconv"

func main() {
 x := int64(999)
 s := strconv.FormatInt(x, 16)

 fmt.Println(s)
}

3e7

or

package main

import (
 "fmt"
 "math/big"
)

func main() {
 x := big.NewInt(999)
 s := fmt.Sprintf("%x", x)

 fmt.Println(s)
}

3e7


fn main() {
    let x = 999;

    let s = format!("{:X}", x);
    println!("{}", s);

    let s = format!("{:x}", x);
    println!("{}", s);
}

{:X} produces uppercase hex. {:x} produces lowercase hex.

3E7
3e7

143. Iterate alternatively over two lists

Iterate alternatively over the elements of the list items1 and items2. For each iteration, print the element.
Explain what happens if items1 and items2 have different size.

交替迭代两个列表

package main

import (
 "fmt"
)

func main() {
 items1 := []string{"a""b"}
 items2 := []string{"A""B""C"}

 for i := 0; i < len(items1) || i < len(items2); i++ {
  if i < len(items1) {
   fmt.Println(items1[i])
  }
  if i < len(items2) {
   fmt.Println(items2[i])
  }
 }
}

a
A
b
B
C

extern crate itertools;
use itertools::izip;

fn main() {
    let items1 = [51525];
    let items2 = [102030];

    for pair in izip!(&items1, &items2) {
        println!("{}", pair.0);
        println!("{}", pair.1);
    }
}

5
10
15
20
25
30

144. Check if file exists

Set boolean b to true if file at path fp exists on filesystem; false otherwise.
Beware that you should never do this and then in the next instruction assume the result is still valid, this is a race condition on any multitasking OS.

检查文件是否存在

package main

import (
 "fmt"
 "io/ioutil"
 "os"
)

func main() {
 fp := "foo.txt"
 _, err := os.Stat(fp)
 b := !os.IsNotExist(err)
 fmt.Println(fp, "exists:", b)

 fp = "bar.txt"
 _, err = os.Stat(fp)
 b = !os.IsNotExist(err)
 fmt.Println(fp, "exists:", b)
}

func init() {
 ioutil.WriteFile("foo.txt", []byte(`abc`), 0644)
}

There's no specific existence check func in standard library, so we have to inspect an error return value.

foo.txt exists: true
bar.txt exists: false

fn main() {
    let fp = "/etc/hosts";
    let b = std::path::Path::new(fp).exists();
    println!("{}: {}", fp, b);

    let fp = "/etc/kittens";
    let b = std::path::Path::new(fp).exists();
    println!("{}: {}", fp, b);
}

/etc/hosts: true
/etc/kittens: false

145. Print log line with datetime

Print message msg, prepended by current date and time.
Explain what behavior is idiomatic: to stdout or stderr, and what the date format is.

打印带时间的日志

package main

import "log"

func main() {
 msg := "Hello, playground"
 log.Println(msg)

 // The date is fixed in the past in the Playground, never mind.
}

// See http://www.programming-idioms.org/idiom/145/print-log-line-with-date/1815/go

2009/11/10 23:00:00 Hello, playground


fn main() {
    let msg = "Hello";
    eprintln!("[{}] {}", humantime::format_rfc3339_seconds(std::time::SystemTime::now()), msg);
}

[2021-07-17T07:14:03Z] Hello


146. Convert string to floating point number

Extract floating point value f from its string representation s

字符串转换为浮点型

package main

import (
 "fmt"
 "strconv"
)

func main() {
 s := "3.1415926535"

 f, err := strconv.ParseFloat(s, 64)
 fmt.Printf("%T, %v, err=%v\n", f, f, err)
}

//
// http://www.programming-idioms.org/idiom/146/convert-string-to-floating-point-number/1819/go
//

float64, 3.1415926535, err=<nil>


fn main() {
    let s = "3.14159265359";
    let f = s.parse::<f32>().unwrap();
    
    println!("{}² = {}" , f, f * f);
}

3.1415927² = 9.869605

or

fn main() {
    let s = "3.14159265359";
    let f: f32 = s.parse().unwrap();

    println!("{}² = {}", f, f * f);
}

3.1415927² = 9.869605


147. Remove all non-ASCII characters

Create string t from string s, keeping only ASCII characters

移除所有的非ASCII字符

package main

import (
 "fmt"
 "regexp"
)

func main() {
 s := "dæmi : пример : příklad : thí dụ"

 re := regexp.MustCompile("[[:^ascii:]]")
 t := re.ReplaceAllLiteralString(s, "")

 fmt.Println(t)
}

dmi : : pklad : th d

or

package main

import (
 "fmt"
 "strings"
 "unicode"
)

func main() {
 s := "5#∑∂ƒ∞645eyfu"
 t := strings.Map(func(r rune) rune {
  if r > unicode.MaxASCII {
   return -1
  }
  return r
 }, s)
 fmt.Println(t)
}

5#645eyfu


fn main() {
    println!("{}""do
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Rust vs Go:常用语法对比(八) 的相关文章

  • CDN防御与高防服务器有什么区别

    CDN防御与高防服务器的区别 1 本质不同 高防服务器是指独立单个硬防防御50G以上的服务 而CDN防御是指通过在现有的Internet中增加一层新的网络架构 2 两者的防御方式不同 高防服务器采用单机防御或者集群防御 而CDN采用多节点分
  • VTD安装教程

    VTD安装 1 安装Nvidia显卡驱动 2 安装依赖包 3 安装license管理工具 helium 4 安装VTD软件 4 1 安装包内容 4 2 安装流程 5 配置license 运行软件 6 配置license管理工具开机自启动 1

随机推荐

  • 如何使用postman做接口测试

    常用的接口测试工具主要有以下几种 Postman 简单方便的接口调试工具 便于分享和协作 具有接口调试 接口集管理 环境配置 参数化 断言 批量执行 录制接口 Mock Server 接口文档 接口监控等功能 JMeter 开源接口测试及压
  • DropDownList 绑定数据

    如何使用DropDownList 控件绑定数据呢 今天我们来介绍一下比较常用的一种方法 前后台结合方式 首先 我们需要拉一个DropDownList 控件 然后 通过控件配置SqlDataSource数据源 选择合适的数据表 接着 设置Da
  • vatic视频标注工具的安装使用及错误解决

    1 安装 基于Ubuntu16 04 sudo pip install cython 0 20 wget http mit edu vondrick vatic vatic install sh 注 vatic install sh可能下载
  • 如何使用java连接MySQL数据库

    如何使用java连接MySQL数据库 编者 芊默 使用的MySQL版本 8 0 19 序言 因为数据库厂商有很多种 为了能够统一让java程序员使用更方便 sun公司编写了一套JDBC接口用于连接数据库 但是只有JDBC接口我们仍然是连接不
  • 聊一聊,这些年我用Python爬虫挣钱的那些事

    1 最典型的就是找爬虫外包活儿 这个真是体力活 最早是在国外各个freelancer网站上找适合个人做的小项目 看见了就赶紧去bid一下 把价格标得死死的 由于是挣dollar 当时换算成人民币是1 7 5左右感觉还是换算 别人标几百刀 我
  • OpenGL:gl_ClipDistance和gl_CullDiatance

    学到了OpenGL中的用户裁剪和前剪切 记录下gl ClipDistance和gl CullDiatance的用法 gl ClipDiatance 输出的裁剪距离将和图元进行线性插值 插值距离小于0 则图元部分将剪切掉 gl CullDia
  • Python数据预处理

    学 目录 1 数据表的基本信息查看 2 查看数据表的大小 3 数据格式的查看 4 查看具体的数据分布 二 缺失值处理 1 缺失值检查 2 缺失值删除 3 缺失值替换 填充 三 重复值处理 1 发现重复值 四 异常值的检测与处理 1 检测异常
  • Linux错误 ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

    ERROR 1045 28000 Access denied for user root localhost using password YES 翻译 错误1045 28000 对用户 root 本地主机拒绝访问 使用密码 是 一般这个错
  • Java String总结

    文章目录 创建String 字符串比较 字符串常量池 直接赋值 构造方法 理解字符串不可变 反射 特殊手段 char 和String StringBuffer和StringBuilder String API 创建String 常见的构造方
  • 实验五_linux进程控制,实验五Linux进程管理

    实验五 Linux进程管理 一 实验目的 1 进行系统进程管理 2 周期性任务安排 二 实验内容 1 进程状态查看 2 控制系统中运行的进程 3 安排一次性和周期性自动执行的后台进程 三 实验练习 任务一 进程管理 实验内容 1 查看系统中
  • Go语言 context的源码分析与典型使用(WithCancel,WithTimeout,WithDeadline,WithValue)

    文章目录 context原理 Context基本结构 WithCancel WithTimeout WithDeadline WithValue 代码实现 context原理 context 主要用来在 goroutine 之间传递上下文信
  • C语言学习打卡11.22

    上一周学习内容 函数 初学函数笔记 返回类型 一个函数可以返回一个值 return type 是函数返回的值的数据类型 有些函数执行所需的操作而不返回值 在这种情况下 return type 是关键字 void 函数名称 这是函数的实际名称
  • Windows提权基本原理

    前言 没有多少人谈论在Windows下提权 是一件让人遗憾的事 我想 没有人这么做的理由有以下几点 在渗透测试项目中 客户需要的验证就是一个低权限shell 在演示环境 你经常就会得到管理员帐户 meterpreter使你变得懒惰 gets
  • Angular4.0_依赖注入简介

    什么是依赖注入模式及使用依赖注入的好处 依赖注入 Dependency Injection 简称DI var product new Product createShipment product 我们new一个对象实例 然后当做参数传递给c
  • C++ 实现 redis 发布订阅 --- 使用 hiredis 同步API(一)

    ubuntu18 04安装redis 方法一 使用ubuntu官方软件库安装redis 1 获取最新的软件包 sudo apt update 2 安装redis sudo apt install redis server 3 查看是否安装好
  • Web安全之SQL注入漏洞学习(七)-堆叠注入

    堆叠注入简介 堆叠注入是指注入的多条SQL语句可以一起执行 MySQL命令行中 每一条语句结尾加 表示语句结束 这样是不是可以多句一起使用 这个叫做 stacked injection 堆叠注入原理 局限性 原理 在MySQL的SQL语法中
  • 华硕电脑怎么录屏?分享实用录制经验!

    华硕电脑怎么录屏呀 刚买的笔记本电脑 是华硕的 自我感觉挺好用的 但是不知道怎么录屏 最近刚好要录一个教程 怎么都找不到在哪里录制 有人能教教我吗 随着电脑技术的不断发展 人们越来越依赖电脑进行工作和娱乐 录屏功能作为电脑的一项重要功能 已
  • 华为OD机试 C++ 【报文重排序】

    题目 你手里有一堆乱七八糟的消息片段 每个片段后面都跟着一个数字 那个数字就像是每个片段的编号 你需要按照这些数字 将消息片段整合成一个完整的消息 并把那些数字扔掉 输入 第一行告诉你有几个消息片段 记作N 0 lt N 1000 第二行就
  • Axure rp9 学习笔记-进度笔记以及问题整理

    Axure rp9 学习笔记 进度笔记以及问题整理 4 15 iphone 原型设计 遇到问题 1 苹果手机左按键画的过程中没有弧度 corner 选项为灰 没法选 2 将绘制好的iphone 原型图设置成母版以后 却无法更改颜色 我们对M
  • Rust vs Go:常用语法对比(八)

    题目来自 Golang vs Rust Which Programming Language To Choose in 2023 1 141 Iterate in sequence over two lists Iterate in seq
Powered by Hwhale