Golang快速入门

Go语言简介:

Golang 简称 Go,是一个开源的编程语言,Go是从2007年末由 Robert Griesemer, Rob Pike, Ken Thompson主持开发,后来还加入了Ian Lance Taylor, Russ Cox等人,并最终于2009年11月开源,在2012年早些时候发布了Go 1稳定版本。

1.Go语言用途:

Go 语言被设计成一门应用于搭载 Web 服务器,存储集群或类似用途的巨型中央服务器的系统编程语言。
Go 语言在用于高性能分布式系统开发中,无疑比大多数其它语言有着更高的开发效率。此外,它提供了海量并行的支持,这对于游戏服务端的开发而言也是不错的选择。

2.Go语言开源项目:

有着媲美C语言的性能和Python的开发效率,被称为21世纪的C语言。目前使用Go语言开发的一些优秀的开源项目有:Dockeretcdkubernetes等。

3.Go语言特点:

  • 优点:

    • 简洁、快速、安全
    • 支持并发编程
    • 自动垃圾回收
    • 编译迅速
    • 开源:Go语言的Github源码
    • 便捷部署:go最终生成的是一个 可执行文件,不管你的程序依赖多少库,都会被打包进行,生成一个可执行文件,所以相比java庞大的jar库来说,他的部署非常方便,执行运行这个可执行文件就好了。
  • 缺点:

    • 错误处理比较繁琐,需要写很多 err 判断

Go开发环境配置:

访问 Golang官网,下载指定平台的安装包,目前支持WindowsMacOS XLinuxFreeBSD 四个平台,这里我们以Windows为例:

1.*Windows下的安装:*

安装包 go1.8.3.windows-amd64.msi 双击打开一路next的傻逼式的安装方式。

  • 资源地址:
    可以到这里下载安装包:Golang中国 或者 官网下载

  • 检查版本:
    直接打开cmd命令行,输入一下指令查询安装Go的版本:

    C:\Users\Administrator>go version
    go version go1.8.3 windows/amd64

2.Linux下的安装:

  • 下载源码包:go1.8.3.linux-amd64.tar.gz
  • 解压到/usr/local目录:tar -C /usr/local -xzf go1.8.3.linux-amd64.tar.gz
  • /usr/local/go/bin目录添加到Path环境变量中:export PATH=$PATH:/usr/local/go/bin

3.Hello World:

  • Tour编辑器:
    假如只是前期的语法学习,可以考虑先不安装开发环境,可以直接在 Golang官网 上的网页内嵌 Tour编辑器 中编写代码和运行:
    在编辑器中编写如下代码:

    package main
    
    import "fmt"
    
    func main() {
        fmt.Println("Hello world!")
    }

    运行结果:

  • 本地运行:
    也可以在本地创建一个hello.go文件,内容与上述一致,然后在命令行定位到创建.go文件的目录下,执行go run (.go文件名)

    E:\Go\Projects>go run hello.go
    Hello world!

    此过程会将.go源码编译成二进制文件,但是编译结果不会保存到本地,可以go build实现此过程,编译结果hello.exe会保存到本地,可以直接在命令行运行:

    E:\Go\Projects>hello.exe
    Hello world!
  • 源码解析:

    • package:是一个关键字,定义一个包,和Java中的Package一样,用于模块化编程;
    • import:也是一个关键字,用于引入包,与Java的import一样,引入包之后可以使用其中的功能;
    • fmt:Go语言的一个自带功能包;
    • main():主函数,也是程序执行的入口;
    • fmt.Println:用于输出一段字符串。

    不难发现Go语言与Java的关键字、函数和包等很相似,但是,Go语言不需要以 ; (分号)符号结尾,一行代表一个语句结束。


Go基本语法:

1.基本数据类型:

数值类型说明
bool布尔
string字符
int,int8,int16,int32,int64int长度与平台相关
uint,uint8,uint16,uint32,uint64uint长度与平台相关
uintptr同指针,32位平台为4字节,64位八字节
byte等价于uint8
rune等价于uint32,单个unicode字符
float32,float64
complex64,complex128复数类型, value = 3.2+12i

2.数值定义:

Go语言最独特的就是:声明变量或者常量时,类型表示写在变量或者常量名称之后。

  • 常量:

    • 显式定义
    const a int = 1
    • 隐式定义
    const a = 1

    可以进行多个相同或不同类型的声明:

    const a, b, c = 1, false, "str" //多重赋值
  • 变量:

    var s string = "hehe"

    声明后若不赋值,使用默认值:

    int a

    假如输出a结果,则为int默认值0。还可以同时对多个相同或不同类型的变量进行声明:

    var e, f = 123, "hello"

    也有一种简化的声明方式,不需显示声明变量类型也省去了var,变量的类型由go根据值推导出来:

    s := "hehe"

有兴趣的还可以了解一下值类型引用类型的区别。

3.操作符:

  • 赋值: =,:=
  • 数值运算: +(相加),-(相减),*(相乘),/(相除),%(求余),++(自增),--(自减)
  • 比较运算: >,<,==,>=,<=,!=
  • 逻辑运算: &&,||,!
  • 位运行: >>,<<,^,&(与),|(或),^x(取反)
  • 其他: &(变量存储地址),*(指针变量)

其中有两个比较特殊的操作符:

特殊操作符说明
:=无需指定类型即可赋值:i, j := true, "hello"
_空白标识符,可以赋任意值的空对象:_ = "string"

空白标识符 _ 也被用于抛弃值,如值 5 在:_, b = 5, 7 中被抛弃。
_ 实际上是一个只写变量,你不能得到它的值。这样做是因为 Go 语言中你必须使用所有被声明的变量,但有时你并不需要使用从一个函数得到的所有返回值。

4.大小写标记访问权限:

在go中不能随便使用大小写的问题,是因为大小写具有特殊意义,在go中,大写字母开头的变量或者函数等是public的,可以被其他包访问;小写的则是private的,不能被其他包访问到。这样就省去了public和private声明的烦恼,使代码变的更简洁。

5.关键字:

关键字作用
package代码所属包
import导入依赖包,不能导入不使用的包
main主函数入口,无参数无返回值,命令行参数保存在os.Args中
func函数声明
go开启协程(并发核心)
map字典类型, map[string]bool
delete专用来删除字典中的元素
chan通道,协程通信核心
select同时读取多个chan的信息
close用来关闭通道
make用来创建chan或map
type类型定义,定义任意需要的类型
structC中的结构体,但可以定义方法以实现类功能
interface接口类型,用来定义接口
new新建对象, 并获得它的指针
range类似python的range,配合for遍历列表、数组或map的元素
defer自动关闭资源,退出代码体(一般是函数)时执行
errorerror接口,只要实现Error()string方法就是一个error接口
panic抛出异常,如果不用recover捕获则会终止程序
recover捕获panic异常,防止程序终止,与recover结合

6.注释:

Go 程序的代码注释与 C++ 保持一致,主持:块注释行注释

  • 块注释:

    /*
    块注释
    */
  • 行注释:

    // 行注释

7.流程控制:

  • 条件:

    条件语句说明
    ifif 语句 由一个布尔表达式后紧跟一个或多个语句组成。
    if…elseif 语句 后可以使用可选的 else 语句, else 语句中的表达式在布尔表达式为 false 时执行。
    if 嵌套你可以在 if 或 else if 语句中嵌入一个或多个 if 或 else if 语句。
    switchswitch 语句用于基于不同条件执行不同动作。
    selectselect 语句类似于 switch 语句,但是select会随机执行一个可运行的case。如果没有case可运行,它将阻塞,直到有case可运行。
    • if

      if i>0 {
      //条件执行内容
      }

      相比于其他语言,Go语言的条件判断语句不需要小括号

      // 特殊用法, 判断语句中可以初始化变量
      if i:=4;i>0{
      fmt.Println("i = ",i)
      }
    • switch,case

      switch i {
      case 0:
      // ...
      case 1:
      // ...
      default:
      // ...
      }

      Go语言的 switch 不需要 break 来跳出一个 case

    • select
      可以看做是专用于通信的switch语句,每一个case必须是一个通信操作,要么是发送要么是接收。select执行逻辑:随机执行一个可运行的case。如果没有case可运行,它将阻塞,直到有case可运行。一个默认的子句应该总是可运行的。

      select {
      case communication clause  :
         statement(s);      
      case communication clause  :
         statement(s); 
      /* 你可以定义任意数量的 case */
      default : /* 可选 */
         statement(s);
      }

      执行select的语法大致如下:

      • 每个 case 都必须是一个通信
      • channel 表达式都会被求值
      • 所有被发送的表达式都会被求值
      • 如果任意某个通信可以进行,它就执行;其他被忽略。
      • 如果有多个 case 都可以运行,select 会随机公平地选出一个执行。其他不会执行。
      • 否则:
        1.如果有 default 子句,则执行该语句。
        2.如果没有 default 字句,select 将阻塞,直到某个通信可以运行;Go不会重新对channel或值进行求值。
  • 循环:

    循环语句说明
    for重复执行语句块
    for嵌套在 for 循环中嵌套一个或多个 for 循环

    Go语言中的for循环与Java、C#等的区别就是三个由 ;(分号)分开的组成部分不需要小括号括起来:

    for i := 0; i < 10; i++ {
    sum += i
    }

    Go语言中没有其他语言中while的用法,for 在Go语言中可以当做 while 来用:

    sum := 1
    //循环条件
    for sum < 1000 {
    sum += sum
    }
    //死循环
    for {// 无退出条件,变成死循环
    }
  • 其他:
    在Go语言中,同样可以使用breakcontinuegoto来控制流程:

    控制语句说明
    break经常用于中断当前 for 循环或跳出 switch 语句
    continue跳过当前循环的剩余语句,然后继续进行下一轮循环
    goto将控制转移到被标记的语句。

    例如goto,需要用一个文本来标志某个语句(写在该语句前面):

    goto label
    ..
    .
    label: statement

    label 就是用来标志的文本,statement 是一个普通的Go语句,goto label执行之后,程序将调到 statement 然后顺序往下执行。

8.函数:

Go语言中定义一个函数的格式如下:

func 方法名称([传入参数表]) [返回结果数据类型]{
    //函数体
}

上面使用[]符号括起来的部分表示 非必须 的,可根据使用情况决定是否可以不写,例如无需传入参数时,传入参数列表可以省略。注意:传入的参数列表中形式参数定义的格式也是:变量名在前,变量类型在后

  • 普通用法:

    package main
    
    import "fmt"
    
    func main(){
        PrintSth(1,2)
        sum := 0
        sum = mSum(10,20)
        fmt.Println("sum = ",sum)
    }
    
    func PrintSth(x,y int){
        fmt.Println("x = ",x,";y = ",y)
    }
    
    func mSum(x,y int) int{
        return x+y
    }
  • 返回多个值:
    例如定义一个值互换的方法:

    //定义函数
    func swap(x, y string) (string, string) {
    return y, x
    }
    //调用函数
    a,b := swap("a","b")
  • 函数作为值:
    定义函数的时候,也可以将函数声明为一个函数变量,调用的时候用函数变量替换函数真是名称来调用即可:

    /* 声明函数变量 */
    getSquare := func(x float64) float64 {
        return x*x
    }
    
    /* 使用函数 */
    fmt.Println(getSquare(3))
  • 闭包:
    闭包,是匿名函数(一个“内联”语句或表达式)的一种声明方式,好处就是可以直接使用函数内的变量不必声明:

    //没调用一次getSequence,i就自增1
    func getSequence() func() int {
    i:=0
    return func() int {
       i+=1
       return i
    }
    }

    函数的返回结果是另一个函数。

  • 方法:
    与函数略有不同,方法声明时会指定其所附的是命名类型或结构类型的一个值或者是一个指针,所有给定类型的方法属于该类型的方法集。例如:

    //定义结构体
    type Circle struct {
    radius float64
    }
    //此属于 Circle 类型对象中的方法
    func (c Circle) getArea() float64 {
    //c.radius 即为 Circle 类型对象中的属性
    return 3.14 * c.radius * c.radius
    }
    //调用
    main(){
    var c Circle
    c.radius = 1
    fmt.Println("Area of c = ", c.getArea())
    }

9.指针:

  • 指针变量:
    一个 指针变量 可以指向任何一个值的内存地址,使用指针前需要声明,声明格式如下:

    var var_name *var-type

    var_name 是变量名,var-type 是指针类型,例如:

    var ip *int        // 此指针只能指向整型
  • 使用步骤:
    创建指针变量,为指针赋值(如:指向变量),输出结果:

    var a int = 1
    //创建指针变量
    var ptr *int
    //指针赋值(指向变量a的地址)
    ptr = &a
    /* 指针变量的存储地址 */
    fmt.Printf("ptr 变量储存的指针地址: %x\n", ptr )
    /* 使用指针访问值 */
    fmt.Printf("*ptr 变量的值: %d\n", *ptr )
  • 取址符:
    Go语言中,使用 &取址符,假如放在变量前可以返回相应变量的内存地址:

    var a int = 1
    fmt.Printf("变量的地址: %x\n", &a  )

    输出结果:

    变量的地址: c0420382a0
  • 空指针:
    Go语言中的空指针是 nil ,表示没有分配到任何变量,判断指针是否为空指针:

    //声明指针,不赋值
    var ptr *int
    if ptr == nil{
    //条件执行块
    }

10.结构体:

以关键字 typestruct 来一起声明一个结构体,格式如下:

type structure_variable_type struct{
    member menberType
    member menberType
    ...
}

其中 structure_variable_type 是当前定义结构体的名称,创建结构体操作:

variable_name := structure_variable_type(value1,value2,...)

例如:

//定义
type Info struct{
    id int
    name string
}
//声明
var mInfo Info
//赋值
mInfo.id = 1
mInfo.name = "linsh"

11.包的使用:

每个Go程序都是由包组成的,其中程序运行入口包为 main ,通常包名与导入目录路径最后一级目录名称一致。例如:导入“math、rand”包,这个包必然是以 package rand 语句开始的。

  • 导入包:
    import 关键字来实现包的导入,有两种格式:

    • 多个导入语句:

      import "fmt"
      import "math"
    • “打包”导入:

      import (
      "fmt"
      "math"
      )

    使用第二种方式导入包更为方便。

  • 导出命名:
    在Go编程中,某个包中 使用首字母大写的名称定义的属性或者方法可以被导入了此包的脚本调用,相当于是开放了访问权限,例如:这里我们定义了一个 ··Test·· 包,然后再 main 包中引入此包并调用其导出方法:

    package Test
    
    func SetName(_name string){
    
    }
    
    func setName(_name string){
    
    }

    main 中先 import Test,然后只能调用 SetName 函数而不能调用 setname


参考资料:

<p><span style="font-size: 24px; background-color: #e53333; color: #ffffff;"><strong>课程目标</strong></span></p> <p> </p> <p><span style="font-size: 18px;">从零开始掌握Premiere影视剪辑的基础知识,学会</span><span style="font-size: 18px; color: #e53333;"><span style="color: #e53333;"><strong>视频剪辑+影视特效+视频调色+字幕制作</strong></span></span></p> <p> </p> <p><span style="font-size: 24px; background-color: #e53333; color: #ffffff;">适用人群</span></p> <p> </p> <p><span style="font-size: 18px;">PR零基础小白,在校大学生,职场新人,想成为影视剪辑、影视后期、短视频制作、自媒体等高手的朋友。</span></p> <p> </p> <p><span style="font-size: 24px; background-color: #e53333; color: #ffffff;">课程简介</span></p> <p> </p> <p><span style="font-size: 18px;">课程以新版PR 2020讲解,可使用PR任意版本学习,绝大多数功能兼容旧版,但强烈建议使用新版本。</span></p> <p><span style="font-size: 18px;">【Adobe认证专家讲师精耕细作精品教程,非学院派照本宣科软件操作教程,以任务为导向,面向实际应用场景,每一章都能学会实打实的高手技能,讲解细致,小白也能轻松入门成大神!】</span></p> <p><span style="font-size: 18px;">课程好不好,看过就知道,前面的免费章节欢迎试看。</span></p> <p><span style="font-size: 18px;">本课程学习不需要任何PR基础,只需要电脑操作基础即可。兼容Windows和Mac操作系统,同时讲解两种系统下的快捷键操作,不用担心操作上的障碍问题。</span></p> <p> </p> <p><span style="font-size: 24px; background-color: #e53333; color: #ffffff;">课程特色</span></p> <p> </p> <p><span style="font-size: 18px;">1、以实际PR影视编辑与特效的流程为导向,绝大多数内容都是为了完成某个具体任务,而不是为了讲解某个软件操作而凑数。</span></p> <p><span style="font-size: 18px;">2、不同于国内多数教程和书籍,每个知识点务求讲精、讲透,帮助你掌握PR的精髓,而非软件操作上的皮毛,让你真正学到PR的本质,一次学习,终身受用,少走弯路,节约生命。</span></p> <p><span style="font-size: 18px;">3、课程会随PR新版本的推出持续更新,不必担心有新功能却不知道怎么用。</span></p> <p><span style="font-size: 18px;">4、充足的练习题和作业题,让你在不断的练习和挑战中提升PR技能。</span></p> <div> <p> </p> <p><img src="https://img-bss.csdnimg.cn/202009230003497469.png" alt="" width="880" height="2635" /><img src="https://img-bss.csdnimg.cn/202009230004006917.png" alt="" width="880" height="2635" /><img src="https://img-bss.csdnimg.cn/202009230004102289.png" alt="" width="880" height="2635" /><img src="https://img-bss.csdnimg.cn/202009230004197845.png" alt="" width="880" height="1445" /></p> </div>
相关推荐
<p>本套课程适用于有一定的<span style="color: #e03e2d;">iOS、Android、Flutter</span>开发基础。</p> <p>学完本次课程,能够让大家对Flutter如何调用移动端原生页面有一个清晰的认识;在纯Flutter开发过程中遇到需要调用原生功能的时候,能够快速定制属于自己或者公司的私有插件- Plugin。</p> <p>课程一共氛围两部分:</p> <p>1、Flutter插件跟iOS的交互部分:包括调用iOS原生页面、如何使用iOS的<span style="color: #e03e2d;">framework二进制</span>、<span style="color: #e03e2d;">bundle资源文件</span>、依赖的cocoapods资源;</p> <p>2、Flutter插件跟安卓的交互部分:包括调用Android原生页面、如何接收原生页面的回调、如何使用aar文件、依赖的其他资源。</p> <p>最终能够帮助大家定制私有插件;提升工作技能。</p> <p><span style="color: #e03e2d;">备注:课程中使用环境</span></p> <p style="margin: 0px; font-stretch: normal; font-size: 12px; line-height: normal; font-family: 'Andale Mono'; color: #2fff12; background-color: rgba(0, 0, 0, 0.9);"><span style="font-variant-ligatures: no-common-ligatures; color: #2fb41d;">[✓]</span><span style="font-variant-ligatures: no-common-ligatures;"> Flutter (Channel stable, 1.22.5, on macOS 11.0.1 20B29 darwin-arm, locale zh-Hans-CN)</span></p> <p style="margin: 0px; font-stretch: normal; font-size: 12px; line-height: normal; font-family: 'Andale Mono'; color: #2fff12; background-color: rgba(0, 0, 0, 0.9); min-height: 14px;"><span style="font-variant-ligatures: no-common-ligatures;"> </span></p> <p style="margin: 0px; font-stretch: normal; font-size: 12px; line-height: normal; font-family: 'Andale Mono'; color: #2fff12; background-color: rgba(0, 0, 0, 0.9);"><span style="font-variant-ligatures: no-common-ligatures; color: #9fa01c;">[!]</span><span style="font-variant-ligatures: no-common-ligatures;"> Android toolchain - develop for Android devices (Android SDK version 30.0.3)</span></p> <p style="margin: 0px; font-stretch: normal; font-size: 12px; line-height: normal; font-family: 'Andale Mono'; color: #00ff00; background-color: rgba(0, 0, 0, 0.9);"><span style="font-variant-ligatures: no-common-ligatures;">    </span><span style="font-variant-ligatures: no-common-ligatures; color: #9fa01c;">!</span><span style="font-variant-ligatures: no-common-ligatures;"> Some Android licenses not accepted.  To resolve this, run: flutter doctor --android-licenses</span></p> <p style="margin: 0px; font-stretch: normal; font-size: 12px; line-height: normal; font-family: 'Andale Mono'; color: #2fff12; background-color: rgba(0, 0, 0, 0.9);"><span style="font-variant-ligatures: no-common-ligatures; color: #2fb41d;">[✓]</span><span style="font-variant-ligatures: no-common-ligatures;"> Xcode - develop for iOS and macOS (Xcode 12.2)</span></p> <p style="margin: 0px; font-stretch: normal; font-size: 12px; line-height: normal; font-family: 'Andale Mono'; color: #2fff12; background-color: rgba(0, 0, 0, 0.9);"><span style="font-variant-ligatures: no-common-ligatures; color: #9fa01c;">[!]</span><span style="font-variant-ligatures: no-common-ligatures;"> Android Studio (version 4.1)</span></p> <p style="margin: 0px; font-stretch: normal; font-size: 12px; line-height: normal; font-family: 'Andale Mono'; color: #2fff12; background-color: rgba(0, 0, 0, 0.9);"><span style="font-variant-ligatures: no-common-ligatures; color: #2fb41d;">[✓]</span><span style="font-variant-ligatures: no-common-ligatures;"> IntelliJ IDEA Community Edition (version 2020.3)</span></p> <p style="margin: 0px; font-stretch: normal; font-size: 12px; line-height: normal; font-family: 'Andale Mono'; color: #2fff12; background-color: rgba(0, 0, 0, 0.9);"><span style="font-variant-ligatures: no-common-ligatures; color: #2fb41d;">[✓]</span><span style="font-variant-ligatures: no-common-ligatures;"> Connected device (1 available)</span></p> <p style="margin: 0px; font-stretch: normal; font-size: 12px; line-height: normal; font-family: 'Andale Mono'; color: #2fff12; background-color: rgba(0, 0, 0, 0.9); min-height: 14px;"> </p> <p style="margin: 0px; font-stretch: normal; font-size: 12px; line-height: normal; font-family: 'Andale Mono'; color: #2fff12; background-color: rgba(0, 0, 0, 0.9);"> </p>
<p> <img src="https://img-bss.csdn.net/201909231423115500.png" alt="" /> </p> <p> <img src="https://img-bss.csdn.net/201909231423337403.png" alt="" /> </p> <p> <img src="https://img-bss.csdn.net/201909231423434581.png" alt="" /> </p> <p> <img src="https://img-bss.csdn.net/201909231424065321.png" alt="" /><img src="https://img-bss.csdn.net/201909231424244483.png" alt="" /> </p> <p> <br /> </p> <p> <br /> </p> <div style="color:#444444;"> 适用人群 <p style="color:#666666;"> Java开发人员,Vue开发人员,前后端分离开发人员,权限管理和配置开发人员 </p> </div> <div style="color:#444444;"> 课程概述 <div style="color:#666666;"> 【讲师介绍】<br />       现某知名大型互联网公司资深架构师,技术总监,职业规划师,首席面试官,曾在某上市培训机构,高校任教多年。<br />      Array(Array老师)10多年互联网公司实战经验,知名的大型互联网公司的架构师,高管等职,在企业长期从事于技术的源码阅读和新技术的研究;擅长于职业规划,面试辅导,从事面试官多年 <br /> 技术选型<br /> 开发环境:Eclipse/Idea ,JDK 1.8以上 <br /> 后端技术<br /> 核心框架:SpringBoot2.x框架系列(同样适用Springcloud F版本以后的版本),如下(节选):    <br /> 持久层框架:MyBatis 3.x + Mybatis-plus 3.x<br /> 日志管理:SLF4J 1.7 + Log4j2 2.7<br /> 工具类:Apache Commons、Jackson 、fastjson、Gson<br /> 权限验证<br /> 前端技术  <br /> Vue  <br /> Vue-cli<br /> ElementUI ---https://element.eleme.io/<br /> JSX (JavaScript Xml)<br /> 前台的权限验证和路由设置<br /> 开发模式  <br />      前后端分离的开发<br /> 数据库 <br />       Mysql5<br /> IDE<br />     Intellij Idea<br /> 【课程收益】<br /> 学完课程能独立完成springboot2+vue+elementUI的整合项目开发(前后端分离) <br /> 学完课程能Shiro的权限控制,按钮级别的权限控制 <br /> 学完课程能独立后端开发和独立前端开发Vue <br /> 学完课程能快速的掌握目前互联网用的前沿的框架和技术实战 </div> </div>
<p style="word-break: break-all; margin: 0px; padding: 0px; overflow-wrap: break-word; color: #666666; font-family: Verdana, 'Microsoft YaHei', 宋体; font-size: 14px; background-color: #ffffff;"><strong style="word-break: break-all;">本课程为Django第六季课程:</strong>后台管理的项目实战, 本项目主要实现基本的学生管理,包含的主要知识点有:virtualenv虚拟环境、pip下载包、多app项目开发、templates模板的继承、font-awesome图标的使用、原生SQL语句和数据库交互、ORM模型和数据库交互、LayUI页面布局、jQuery实现用户交互、Ajax的异步请求、页面的块状展示数据、表格展示数据、表格的分页、数据的增改删改、Layer弹出层使用、表单的验证等等知识点。</p> <p style="word-break: break-all; margin: 0px; padding: 0px; overflow-wrap: break-word; color: #666666; font-family: Verdana, 'Microsoft YaHei', 宋体; font-size: 14px; background-color: #ffffff;"> </p> <p style="word-break: break-all; margin: 0px; padding: 0px; overflow-wrap: break-word; color: #666666; font-family: Verdana, 'Microsoft YaHei', 宋体; font-size: 14px; background-color: #ffffff;">本案例完整的演示了项目实现过程,虽然不复杂,但涉及的内容非常多,特别是前后端交互的时候,有诸多的坑等着你去踩,好在王老师全程代码呈现,带着大家一起填坑,大大提高学习效率的同时,也培养了大家良好的代码习惯,希望大家一致跟着王老师学习Python开发。</p> <p style="word-break: break-all; margin: 0px; padding: 0px; overflow-wrap: break-word; color: #666666; font-family: Verdana, 'Microsoft YaHei', 宋体; font-size: 14px; background-color: #ffffff;"> </p> <p style="word-break: break-all; margin: 0px; padding: 0px; overflow-wrap: break-word; color: #666666; font-family: Verdana, 'Microsoft YaHei', 宋体; font-size: 14px; background-color: #ffffff;"> </p> <p style="word-break: break-all; margin: 0px; padding: 0px; overflow-wrap: break-word; color: #666666; font-family: Verdana, 'Microsoft YaHei', 宋体; font-size: 14px; background-color: #ffffff;"> </p> <p style="word-break: break-all; margin: 0px; padding: 0px; overflow-wrap: break-word; color: #666666; font-family: Verdana, 'Microsoft YaHei', 宋体; font-size: 14px; background-color: #ffffff;"><span style="word-break: break-all;"><span style="word-break: break-all; color: #ff0000;"><strong style="word-break: break-all;">课程目标:</strong></span><br style="word-break: break-all;" /><span style="word-break: break-all;">本系列课程是从零基础开始并深入讲解Django,最终学会使用Django框架开发企业级的项目。课程知识点详细,项目实战贴近企业需求。本系列课程除了非常详细的讲解Django框架本身的知识点以外,还讲解了web开发中所需要用到的技术,学完本系列课程后,您将独立做出一个具有后台管理系统,并且前端非常优美实用的网站。对于从事一份Python Web开发相关的工作简直轻而易举。</span></span></p> <p style="word-break: break-all; margin: 0px; padding: 0px; overflow-wrap: break-word; color: #666666; font-family: Verdana, 'Microsoft YaHei', 宋体; font-size: 14px; background-color: #ffffff;"> </p> <p style="word-break: break-all; margin: 0px; padding: 0px; overflow-wrap: break-word; color: #666666; font-family: Verdana, 'Microsoft YaHei', 宋体; font-size: 14px; background-color: #ffffff;"> </p> <p style="word-break: break-all; margin: 0px; padding: 0px; overflow-wrap: break-word; color: #666666; font-family: Verdana, 'Microsoft YaHei', 宋体; font-size: 14px; background-color: #ffffff;"><span style="word-break: break-all;"><span style="word-break: break-all;"><img src="https://img-bss.csdnimg.cn/202102061554519299.png" alt="" /></span></span></p>
©️2020 CSDN 皮肤主题: 书香水墨 设计师:CSDN官方博客 返回首页